김영한님 왈 : 자바에서 기본형과 참조형을 이해하는 것은 정말 중요하다.
자바 대원칙 one more time : 항상 변수의 값을 복사해서 대입한다
기본형
- int, long, double, boolean
- 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입
- 자바에서 기본 제공
- 기본형은 바로 계산 가능
참조형
- Student student1, int[] students → 클래스와 배열을 다루는 변수
- 데이터에 접근하기 위한 참조값(주소값)을 저장하는 데이터 타입
- 참조형은 바로 계산 불가능
- 객체는 .(dot)을 통해 메모리 상에 생성된 객체를 찾아가야 사용할 수 있다
기본형과 참조형 비교
기본형은 값을 변경해도 영향을 주지 않지만, 참조형은 변수가 참조값을 가지고 있기 때문에 각 변수간 영향을 줄 수 있다. 이게 무슨 말이냐면
- 기본형
int a = 10;
int b = a;
int a = 20;
인 경우, a = 20, b = 10이다.
왜냐하면 a, b는 모두 기본형인 int 타입이고 자바는 값을 복사해서 대입하기 때문이다.
- 참조형
변수와 초기화
- 변수의 종류
- 멤버 변수
- 클래스에 선언된 변수
- 자동 초기화 된다(int = 0, boolean = false, 참조형 = null)
- 지역 변수
- 메서드에 선언된 변수, 매개변수(파라미터)도 지역변수의 한 종류
- 직접 수동으로 초기화 해야한다
- 멤버 변수
null
값이 존재하지 않는 상태를 의미한다. 참조가 null이라면 객체를 찾아야하는 주소가 없는 것이다. 참조가 null인 인스턴스는 사용되지 않고 메모리 용량만 차지된다. 그렇기에 자바의 GC가 이를 찾아 제거함으로써 메모리 관리를 한다. 참조형 변수에만 null 할당 가능하다.
- NullPointerException
- 주소가 없는 곳을 찾아갈 때 발생하는 예외
- 예시 : null.name인 경우에 발생한다
Reference
인프런 '김영한의 실전 자바 - 기본편'
'Dev Language > Java' 카테고리의 다른 글
[자바/기본] 4. 생성자 (0) | 2024.01.04 |
---|---|
[자바/기본] 3. 객체지향 프로그래밍 (0) | 2024.01.04 |
[자바/기본] 1. 클래스와 데이터 (4) | 2024.01.04 |
[자바/입문] 8. 메서드 (2) | 2023.12.29 |
[자바/입문] 7. 배열 (0) | 2023.12.29 |