call by value
- 기본형을 매개인자로 사용하는 경우
- 값 복사
- 결국, int n = a;
call by reference
- 참조형을 매개인자로 사용하는 경우
- 주소값복사 -> 같은 객체를 공유
int[] arr = {1,2,3};
study.test2(arr);
System.out.println(Arrays.toString(arr));{1,200,3}
}
public void test2(int[] brr) {
brr[1] *= 100;
System.out.println(Arrays.toString(brr));//{1,200,3}
}
- 복사된 arr -> brr[1]에 100을 곱하여 200을 만듬
- 그 후 brr출력 리턴시 call stack 영역 test2삭제 arr출력시 값이 복사된 arr[1]역시 200 그대로 출력(얇은복사 처럼된다)
//예외상황
String str ="안녕";
study.test3(str);
System.out.println(str);
}
public void test3(String s) {
s += "잘가";
System.out.println(s);
}
- test3공간에 str주소값을 s에 전달
- 이 때 str주소값에 담긴 "안녕"이 +="잘가"만나 str주소값"안녕잘가"가 되는것이 아닌
- 새로운 주소에 "안녕잘가" 생성 그 주소가 s로 전달
매개인자가 여러개면 그 타입에 따라 각각(call by value, call by reference)달라진다
'Programming > Java' 카테고리의 다른 글
[JAVA 다형성]up-casting,down-casting,객체배열의 다형성,instanceof 연산자,동적바인딩 (0) | 2022.03.22 |
---|---|
[JAVA 상속]생성자,new역할,this (0) | 2022.03.20 |
[JAVA 메소드]오버로딩 (0) | 2022.03.17 |
[JAVA 메소드]멤버,클래스메소드 (0) | 2022.03.17 |
[JAVA] Arrays.toString() (0) | 2022.03.16 |