기본형과 참조형
기본형
- int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입
참조형
- Student student1, int[] students 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입
기본형 변수에는 직접 사용할 수 있는 값이 들어있지만 참조형 변수에는 위치(참조값)가 들어가 있다.
기본형 변수는 null을 할당할 수 없다.
기본형 변수는 산술 연산을 수행할 수 있지만, 참조형 변수는 산술 연산을 수행할 수 없다.
String
자바에서 String은 특별하다. String은 클래스고 참조형이다. 하지만 기본형처럼 문자 값을 바로 대입할 수 있다.
문자는 매우 자주 다루기 때문에 자바에서 특별하게 편의 기능을 제공한다.
기억할것
- 자바는 항상 변수의 값을 복사해서 대입한다!
변수와 초기화
변수의 종류
1. 멤버변수 : 클래스에 선언
2. 지역변수 : 메서드에 선언, 매개변수도 지역변수의 한 종류이다
변수의 값 초기화
- 멤버 변수 : 자동 초기화
- 인스턴스의 멤버 변수는 인스턴스를 생성할 때 자동으로 초기화된다.
- 숫자(int) = 0 , boolean = false , 참조형 = null
- 지역변수 : 수동초기화
- 지역 변수는 항상 직접 초기화해야 한다.
null
참조형 변수에서 아직 가리키는 대상이 없다면 null 이라는 특별한 값을 넣어둘 수 있다.
null은 값이 존재하지 않는, 없다는 뜻이다.
GC(가비지 컬렉션)
public class NullMain1 {
public static void main(String[] args) {
Data data = null;
System.out.println("1. data " + data);
data = new Data();
System.out.println("2. data " + data);
data = null;
System.out.println("3. data" + data);
}
}
위의 소스와 같이 생성한 data 객체는 Data 인스턴스를 더는 아무도 참조하지 않는다.
예를들어 data의 참조값이 x001 이라면 x001 이라는 참조값을 다시 구할 방법이 없다. 따라서 해당 인스턴스에 다시 접근할 방법이 없다.
이렇게 아무도 참조하지 않는 인스턴스는 메모리 용량만 차지하게 된다.
이러한 아무도 참조하지 않는 인스턴스가 있으면 JVM이 자동으로 해당 인스턴스를 메모리에서 제거해준다.
가비지 컬렉션이라고 한다.
NullPointerException
주소가 없는 곳을 찾아갈 때 발생하는 예외이다.
객체를 참조할 때는 .을 사용한다. 이렇게 하면 참조값을 사용해서 해당 객체를 찾아갈 수 있다. 그런데 참조값이 null 이라면 값이 없다는 뜻으로 찾아갈 수 있는 인스턴스가 없다. 이처럼 null에 .을 찍었을 때 발생한다.
public class NullMain2 {
public static void main(String[] args) {
Data data = null;
data.value = 10;
System.out.println("data = " + data.value);
}
}
data에는 null 값이 들어있기 때문에 null.value 로 nullPointerException이 발생한다.
Reference
김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런
김영한 | , [사진]국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다? 이걸로는 안됩니다!전 우아한형제들 기술이사, 누적 수강생 40만
www.inflearn.com
'JAVA' 카테고리의 다른 글
김영한의 실전 자바 기본편 - 4일차 (0) | 2025.04.13 |
---|---|
김영한의 실전 자바 기본편 - 3일차 (0) | 2025.04.06 |
김영한의 실전 자바 기본편 - 1일차 (0) | 2025.03.27 |
JSON (0) | 2024.02.20 |
자바 TimerTask (0) | 2023.12.21 |