반응형
📖 다음 Java 프로그램의 실행결과는?
class Ref {
int a;
Ref(int x) {
a = x;
}
int sum(Ref obj) {
int k;
k = obj.a - a;
a = 10; obj.a = 20;
return k;
}
}
class PassRef {
public static void main(String[] args) {
Ref obj1 = new Ref(3);
Ref obj2 = new Ref(4);
int k1 = obj2.sum(obj1);
System.out.print(" k1= "+k1);
System.out.print(" obj1.a= "+obj1.a);
System.out.print(" obj2.a= "+obj2.a);
}
}
💡 풀이
먼저 PassRef 클래스의 메인 함수 영역을 살핍니다.
Ref 형태의 obj1을 생성하였습니다.
생성자에 매개변수 3이 들어가 있어 위의 Ref 클래스에서 매개변수가 int인 생성자를 따라갑니다.
obj1에는 a 라는 변수에 3이 들어가 있습니다.
두번째 obj2를 생성하고 a에는 4가 들어가 있습니다.
k1 변수에는 obj2의 sum 함수를 실행합니다. 매개변수는 obj1이 들어가 있습니다.
sum 함수를 살펴보면
k라는 변수가 생성되고 k 변수에는 obj.a 에서 a를 뺀 값을 저장합니다.
여기서 obj.a는 obj1의 a 값을 의미합니다.
그리고 a는 obj2의 a 값을 의미합니다.
그래서 k 변수에는 3 - 4 인 -1이 저장됩니다.
그리고 아래 코드에서 변수 a의 값을 10으로 변경하는데 여기서 a는 obj2의 a를 의미합니다.
그리고 obj.a = 20의 의미는 obj1의 a 값에 20을 넣어라는 의미입니다.
그리고 return 값으로 k의 값인 -1이 리턴됩니다.
즉 k1 변수에는 -1이 저장됩니다.
출력은 다음과 같이 출력됩니다.
System.out.print(" k1= "+k1);
System.out.print(" obj1.a= "+obj1.a);
System.out.print(" obj2.a= "+obj2.a);
k1= -1 obj1.a = 20 obj2.a = 10
반응형
'Java > Java 연습문제' 카테고리의 다른 글
자료구조 연습문제 2 (0) | 2023.09.26 |
---|---|
자료구조 연습문제 (0) | 2023.09.26 |
이름 붙은 반복문 심화예제 (0) | 2023.08.12 |
이름 붙은 반복문 (0) | 2023.08.12 |
break문과 continue 문 예제 (0) | 2023.08.12 |