참조_메소드
2024. 1. 11. 22:17ㆍJAVA
또또또또또! 질리도록 머리에 박아 넣자.
자바는 항상 변수의 값을 복사해서 대입한다. - Call By Value
동작 방식
기본형 : 변수에 있는 '값'을 복사하여 대입한다.
참조형 : 변수에 있는 '주소값'을 복사하여 대입한다.
기본형
public static void main(String[] args) {
int a = 10;
System.out.println("호출 전 a = " + a); // 10
changePrimitive(a);
System.out.println("호출 후 a = " + a); // 10
}
private static void changePrimitive(int a) {
a = 5;
}
함수를 호출하면서 넣은 인자 a와 메서드의 매개변수 a 는 다르다.
어떻게 다르냐?
앞서 반복했던 내용
'자바는 변수의 값을 읽어 복사하여 대입한다.'
인자의 값을 복사해서 매개변수에 붙여 넣었다.
인자 a 와 매개변수 a 는 값을 주고 받은 시점에 서로 무관하다.
깜빡했던 내용도 다시 한 번 복습해보자.
메서드가 호출되면, 메서드 실행에 필요한 매개변수 등에 대한 메모리가 새롭게 할당된다.
즉!! 인자(Argument)인 a 와 매개변수(Parameter)인 a는 다르다.
참조형
참조형은 아 이제 아는 것 같다. 그만 읇자..
참조형의 경우, 참조 주소값이 복사되어 전달되므로
parameter의 주소값 = argument 의 주소값
같은 객체를 참조하므로 조작이 발생하면 양쪽 다 값이 바뀌는 것 처럼 보인다.
참조하는 객체는 동일하니까!
public static void main(String[] args) {
Data data = new Data();
data.value = 10;
System.out.println("data = " + data);
System.out.println("data.value = " + data.value);
changeRef(data);
System.out.println("data = " + data.value);
}
private static void changeRef(Data data) {
System.out.println("data = " + data);
data.value = 20;
}
'JAVA' 카테고리의 다른 글
| 참조_NULL (0) | 2024.01.13 |
|---|---|
| 참조_변수 초기화 (0) | 2024.01.13 |
| 참조_기본형과 참조형 (0) | 2024.01.11 |
| Class_instance (0) | 2024.01.10 |
| Class_이게 뭔데 (0) | 2024.01.10 |