기본형과 참조형
기본형
- 실제 사용하는 값을 변수로 담을 수 있다.
- 메서드로 기본형 데이터를 전달 하면 값이 복사되어 전달된다.
참조형
- 실제 객체의 위치를 저장한다. ex)객체, 배열, 클래스, String(클래스)
- 메서드로 참조형 데이터를 전달하면 참조값이 복사되어 전달된다.
💡 기본형은 소문자로 시작한다.
💡 기본형을 제외한 나머지는 모두 참조형이다.
💡 클래스는 대문자로 시작한다. 클래스는 모두 참조형이다.
대원칙 - 자바는 항상 변수의 값을 복사해서 대입한다.
변수 대입
기본형이면 변수에 들어 있는 실제 사용하는 값을 복사해서 대입하고,
참조형이면 변수에 들어 있는 참조값을 복사해서 대입한다.
메서드 호출
메서드 호출 시 사용하는 매개변수(파라미터)도 결국 변수다.
기본형: 메서드 내부에서 매개변수(파라미터)의 값을 변경해도, 호출자의 변수 값에는 영향이 없다.
참조형: 메서드 내부에서 매개변수(파라미터)로 전달된 객체의 멤버 변수를 변경하면, 호출자의 객체도 변경된다.
변수와 초기화
변수의 종류
- 멤버 변수(필드) : 클래스에 선언
- 지역 변수: 메서드에 선언, 매개변수도 지역 변수의 한 종류이다.
변수의 값 초기화
- 멤버 변수: 자동 초기화
- 숫자(int)=0, boolean=false, 참조형=null(참조할 대상이 없다는 뜻)
- 인스턴스의 멤버 변수는 인스턴스를 생성할 때 자동으로 초기화
- 개발자가 직접 초기화 해줄 수 있음
- 지역 변수: 수동 초기화
- 항상 직접 초기화해야 한다.
Null
참조형 변수에서 아직 가리키는 대상이 없다면 null이라는 값을 넣어둘 수 있다.
*참조형 변수를 만든 후 null 값 할당 후, 객체를 생성해 다시 할당을 한다 하자.
그리고 다시 null 값을 할당한다면 더는 참조하지 않는 인스턴스는 JVM의 GC(가비지 컬렉션)이 자동으로 메모리에서 제거해준다.
NullPointerException
- null을 가리킬 때 발생하는 예외
- null에 .을 찍어 참조할 때 발생
💡 NullPointerException이 발생하면 null값에 .을 찍었다고 생각하면 된다.
참고) 김영한 - 실전 자바
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 생성자, this (1) | 2024.01.30 |
---|---|
[JAVA] 객체 지향 프로그래밍이란? (0) | 2024.01.30 |
[JAVA] 클래스와 데이터 (0) | 2024.01.30 |
[JAVA] String, StringBuilder, StringBuffer 차이 (0) | 2023.04.20 |
[JAVA] Collection 최솟값, 최댓값 구하기 (0) | 2023.04.05 |