SMALL
public static void main(String[] args) {
int a = 10;
System.out.println("메서드 호출 전: a = " + a);
changePrimitive(a);
System.out.println("메서드 호출 후: a = " + a);
}
static void changePrimitive(int x) {
x = 20;
}
자바는 항상 변수의 값을 복사해서 대입한다.
- 기본형, 참조형 모두 항상 변수에 있는 값을 복사해서 대입한다. 기본형이면 변수에 들어 있는 실제 사용하는 값을 복사해서 대입하고, 참조형은 변수에 있는 참조값을 복사해서 대입한다.
기본형 매서드 호출
public static void main(String[] args) {
int a = 10;
System.out.println("메서드 호출 전: a = " + a);
changePrimitive(a);
System.out.println("메서드 호출 후: a = " + a);
}
static void changePrimitive(int x) {
x = 20;
}
실행 결과 ```
메서드 호출 전: a = 10
메서드 호출 후: a = 10
처음에 말했다시피 값을 복사해서 매서드의 매개변수에 값을 넣기 때문에 값이 바뀌지 않는다.
참조형 매서드 호출
public static void main(String[] args) {
Data dataA = new Data();
dataA.value = 10;
System.out.println("메서드 호출 전: dataA.value = " + dataA.value);
changeReference(dataA);
System.out.println("메서드 호출 후: dataA.value = " + dataA.value);
}
static void changeReference(Data dataX) {
dataX.value = 20;
}
실행 결과 ```
메서드 호출 전: dataA.value = 10
메서드 호출 후: dataA.value = 20
참조형은 참조값을 넘기기 때문에 해당 값을 변경시키면 해당 참조되어 있는 객체에 값을 바꾸기 때문에 값이 변경된다.
추가
기본형 변수는 null 을 할당할 수 없지만, 참조형 변수는 null 을 할당할 수 있다.
반응형
LIST
'Java' 카테고리의 다른 글
자바 메모리 구조 (0) | 2023.12.18 |
---|---|
객체지향, 절차 지향 (2) | 2023.12.18 |
기본형(int)과 참조형(Student) 개념, 변수 대입 -1 (0) | 2023.12.18 |
클래스 (객체) - 메모리 (0) | 2023.12.18 |
제네릭 (0) | 2023.06.13 |