자바에는 클래스 변수, 인스턴스 변수, 지역 변수가 존재하며,
변수의 종류는 변수가 선언된 위치에 따라 결정된다.
static이 붙어있는 것은 클래스 변수,
붙어있지 않은 것은 인스턴스 변수이다.
인스턴스 변수는 각각 다른 값을 가질 수 있다는 특징을 가지고 있으나,
클래스 변수는 모든 인스턴스가 같은 값을 가지게 된다.
지역 변수는 메서드가 실행되는 동안 사용하다가 끝나면 소멸되어 사용할 수 없게 되는 변수이다.
기본형 (Primitive Type) | 참조형 (Reference Type) |
int, boolean, char, double 등 | Person, String, int[] 등 클래스 기반 자료형 |
변수가 값 자체를 보관한다 | 실제 값은 메모리 어딘가에 저장, 변수는 그 영역(값)을 ‘가리킨다’. |
☆ null 은 '비어있음' 을 의미하며 참조형 변수만 가질 수 있다.
간단하게 살펴보자면,
1.
-> int 배열을 선언하고 값을 넣어주지 않았기 때문에 int의 기본 값인 0이 출력
2.
-> Person은 클래스, people[0]은 참조형이고 기본 값은 null이므로 null이 출력된다.
3.
-> person.age인 a[0]이 26을 가리킴.
-> a[0]++;로 인해 26의 값이 27로 바뀌고 person.age도 27이 됨.
-> people[1]과 people[0]이 같은 인스턴스를 가리키기 때문에 둘 다 age는 27.
-> 그 후 28로 바꿔도 이미 27이라는 값을 가지고 있기 때문에 바뀌지 않고 27 출력.
728x90
'Java' 카테고리의 다른 글
[IntelliJ] Gradle Dependencies refresh (1) | 2023.09.27 |
---|---|
[Java] 대소문자 변환 / equals 와 == (0) | 2023.01.21 |