기본형(primitive type)
- 정수타입 : byte, short, int, long
- 실수타입 : float, double
- 문자타입 : char
- 논리타입 : boolean
참조형(reference type)
- 배열 타입
- 열거 타입
- 클래스
- 인터페이스
- 기본형을 제외한 나머지
기본형 vs 참조형 - 변수 대입
대원칙 : 자바는 항상 변수의 값을 복사해서 대입한다.
- 기본형 : 변수에 들어 있는 실제 사용하는 값을 복사해서 대입
- 참조형 : 변수에 들어 있는 참조값을 복사해서 대입
// 기본형 변수 대입
int a = 10;
int b = a;
System.out.println("a = " + a); // 10
System.out.println("b = " + b); // 10
b = 20;
System.out.println("a = " + a); // 10
System.out.println("b = " + b); // 20
// 참조형 변수 대입
Student student1 = new Student();
student1.name = "kim";
Student student2 = student1;
System.out.println("student1.name = " + student1.name); // kim
System.out.println("student2.name = " + student2.name); // kim
student2.name = "Lee";
System.out.println("student1.name = " + student1.name); // Lee
System.out.println("student2.name = " + student2.name); // Lee
기본형 vs 참조형 - 메서드 호출
대원칙 : 자바는 항상 변수의 값을 복사해서 대입한다.
- 기본형 : 메서드로 기본형 데이터를 전달하면 해당 값이 복사되어 전달됌.
- 참조형 : 메서드로 참조형 데이터를 전달하면 참조값이 복사되어 전달됌.
// 기본형 메서드 호출
public static void main(String[] args) {
int a = 10;
System.out.println("a = " + a); // 10
changePrimitive(a);
System.out.println("a = " + a); // 10
}
static void changePrimitive(int x) {
x = 20;
}
// 참조형 메서드 호출
public static void main(String[] args) {
Student student = new Student();
student.name = "kim";
System.out.println("student.name = " + student.name); // kim
changeReference(student);
System.out.println("student.name = " + student.name); // Lee
}
static void changeReference(Student data) {
data.name = "Lee";
}