티스토리 뷰
Call by Value(Pass by Value)와 Call by Reference(Pass by Reference)에 대해 알아보겠습니다.
Java의 메서드 호출 방식은 Call by Value이지만 인자 값이 원시 또는 참조 자료형에 따라 부르는 명칭만 다른 거 같습니다.
Call by Value는 메서드 안에서 인자 값을(원시 자료형) 변경해도 인수 값은 변경되지 않습니다.
Call by Reference는 객체의 주소값을(참조 자료형) 넘겨주기 때문에 객체 변수의 값을 변경할 수 있습니다.
아래 코드블록은 Call by Value 예제입니다.
* 인자 값은 변경이 되지만 인수값은 변경되지 않는 걸 확인할 수 있습니다.
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a + ", " + b);
// 결과: 1, 2
swap(a, b);
System.out.println(a + ", " + b);
// 결과: 1, 2
}
public static void swap(int a, int b) {
a = 100;
b = 200;
System.out.println(a + ", " + b);
// 결과: 100, 200
}
아래 코드블록은 Call by Reference 예제입니다.
* 객체 안에 있는 값이 변경되는 걸 확인할 수 있습니다.
public static class Test{
String value = "전";
}
public static void chgValue(Test t){
t.value = "후";
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.value);
// 결과: 전
chgValue(t);
System.out.println(t.value);
// 결과: 후
}
public static void main(String[] args) {
Map<String, Object> info = new HashMap<String, Object>();
info.put("이름", "짱구");
info.put("국적", "일본");
System.out.println(info);
// 결과: {국적=일본, 이름=짱구}
addInfo(info);
System.out.println(info);
// 결과: {국적=일본, 이름=신짱구, 나이=7살}
}
public static void addInfo(Map<String, Object> info) {
Map<String, Object> rtnMap = info;
rtnMap.put("나이", "7살");
rtnMap.put("이름", "신짱구");
}
끝.
728x90
'Java' 카테고리의 다른 글
[Java] Remove HTML tags (0) | 2023.04.13 |
---|---|
[Java] Regular expression (0) | 2023.03.10 |
[Java] PMD를 활용한 코드 개선 (0) | 2022.12.27 |
[Java] distinct() (0) | 2022.12.15 |
[Java] Iterator() (0) | 2022.11.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- operators
- index
- isalpha
- for
- Built-in Functions
- If
- Method
- combinations
- function
- zip
- isdigit
- Upper
- Lambda
- find
- permutations
- bool
- Lower
- counter
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함