변수란 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 프로그램은 변수를통해 번지에 값을 저장하고 읽을 수 있다.
변수를 메모리의 어디에 저장하고 어떤 방식으로 저장할지는 프로그래밍 언어와 운영체제가 정하는데, 자바의 경우 JVM이 하게 된다.
자바가상머신으로, 자바 바이트 코드를 해석하고 실행하는 역할을 한다.
java 는 OS에 종속적이지 않는다는 특징을 가지고 있다.
일단 프로그램이 실행되면 JVM은 OS로부터 프로그램을 수행하는데 필요한 메모리를 할당받는다
이 메모리를 가지고 JVM은 용도에 따라 구분해서 사용한다.
** java 컴파일러?
JDK 를 설치하면 bin에 존재하는 javac.exe를 말한다.
cr. https://m.blog.naver.com/heartflow89/220954420688
**: 전역변수나 static으로 선언되는 것들을 메모리에 상주시킨다. **
**: 힙 영역은 인스턴스를 생성할 때 생성되는 메모리 형식이다.**
Instance instance = new Instance();
: **지역변수나 메서드의 매개변수, 임시적으로 사용되는 변수, 메서드의 정보가 저장되는 영역**
Person p = new Person("홍길동",20);
p --> Stack 영역 저장
Person --> Heap 영역 저장
: 스레드가 시작될때 생성되며, 현재 수행중인 JVM 명령어 주소를 저장하는 영역
스레드가 어떤 부분을 어떤 명령어로 수행할지 저장하는 공간
:JAVA가 아닌 다른언어로 작성된 코드를 위한 영역
: 계산에 대한 실제 값을 저장한다. 총 8개
: 객체의 주소를 저장한다 기본형을 제외한 나머지 타입.
상수는 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없으며, 반드시 선언과 동시에 초기화 해야한다.
그 후 부터는 상수의 값을 변경하는 것이 허용되지 않는다.
** Jdk 1.6 부터 사용하기 전에만 초기화하면 되도록 바뀜
상수를 선언하는 방법은 변수와 동일하며, 단지 변수타입 앞에 키워드 'final'을 붙여주기만 하면 된다.
상수의 이름은 모두 대문자, 여러단어로 이루어져 있는 경우 '_'로 구분한다.
: 그 자체로 값을 의미하는 것
int year = 2014;
final int MAX_VALUE = 100;
/* year = 변수
2014, 100 = 리터럴
MAX_VALUE = 상수
*/
final int MAX_SPEED = 10; // 상수 선언&초기화