: 실제 값을 저장함
int i = 0;
: 주소값을 저장함
String s = new String("Java");
기본형 변수처럼 stack영역에 참조형변수명 s라는 이름을 가진 공간이 생성된다. 단, 이때 변수의 크기는 4byte의 고정된 크기만 생성된다.
그리고 new
라는 명령어가 Heap 영역에 새로운 저장공간을 생성한다.
공간의 크기는 변수의 주소가 가리키는 실제 값(Java)의 크기만큼 생성된다.
그리고 이 공간은 메모리 주소값을 할당받는다.
: 접근 제어자에 따라 클래스를 외부에서도 사용할 수 있음
💡 접근 제어자(Access Modifier)란?
- Java에서 정보 은닉을 위해 사용하는 것
- 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하녀 정보 은닉을 구체화함
- 접근 제어자 종류
- private
- public
- default
- protected
= static 변수
접근 방법
👉🏻 인스턴스 변수 vs 클래스 변수
- 인스턴스 변수 : 객체(인스턴스)를 생성한 후 참조변수를 통해서만 접근 가능
- 클래스 변수 : 객체를 생성하지 않아도 클래스명으로 바로 접근이 가능
클래스 영역 중 static이 아닌 변수
개별적인 저장 공간으로 객체/인스턴스마다 다른 값 저장 가능
즉, 인스턴스를 여러 개 생성했다면 각각의 참조 변수명으로 접근 가능. 각각에 값 저장 가능
👉🏻 인스턴스 변수 vs 클래스 변수
- 인스턴스 변수 : 객체를 공유하지 않음
- 클래스 변수 : 객체를 공유함
접근 방법 : 객체 생성 후 참조변수명으로 접근
💡 Tip
Java에서 객체/인스턴스를 생성만 하고 참조변수가 없는 경우, 가비지컬렉터에 의해 자동으로 제거됨
: 접근제어자를 사용하지 않음
// example
int i = 0;
💡 주의
조건문, 반복문 밖에서도 변수를 사용하고 싶을 경우에는 블록 밖에서 선언 필요
(지역변수로 하면 소멸됨)