Call by value -> Call by reference 메서드 구현2
Call by value 메서드 호출을 Call by reference 방식으로 바꿔서 코드를 구현
이 문제는 앞서 다뤘던 문제의 Call by value 방식을 Call by reference방식으로 수정해서 보내라는 의미다.
a 값이 같은 결과가 나오도록 코드를 구현 수정
class TestNumber{
int num;
TestNumber(int num){
this.num = num;
}
}
public class method_methodCall3 {
public static void sum(TestNumber a) {
System.out.println("sum() 메서드안에서 a 값(TestNumber주소) : " + a);
System.out.println(a.num);
a.num = a.num + 400;
System.out.println(a.num);
}
public static void main(String[] args) {
// [1] : 객체 변수 선언
TestNumber a = new TestNumber(100);
sum(a);
System.out.println(a.num);
}
}
- `TestNumber` 클래스 : 이 클래스는 `num` 이라는 변수를 가지고 있다. 이 변수는 각 `TestNumber` 객체의 상태를 나타낸다. 생성자를 통해 `TestNumber` 객체가 생성될 때 `num의 값이 초기화된다.
- `method_methodCall3` 클래스 : 이 클래스는 `sum`이라는 정적메서드와 `main` 메서드를 포함하고있다.
- `sum` 메서드 : 이 메서드는 `TestNumber` 타입의 매개변수를 받는다. 메서드 내에서는 전달된 객체의 주소와 `num`의 현재 값을 출력한 후, `num`에 400을 더하여 `num`의 값을 변경하고, 변경된 값을 출력한다. 여기서 중요한 점은 이 메서드에서 전달 받은 객체의 `num`값이 변경되면 원래 객체의 `num`값도 변경된다는 것이다. 이는 java에서 객체를 참조에 의해 전달하기 때문이다.
- `main`메서드 : 이 메서드에서는 `TestNumber` 객체를 생성하고 `sum`메서드에 전달한 후, `sum`메서드 호출 이후의 `a.num`값을 출력한다.
위 코드를 실행하면 다음과 같은 출력값이 나온다.
sum() 메서드안에서 a 값(TestNumber주소) : [TestNumber의 인스턴스 주소]
100
500
500
` sum()` 메서드를 호출할 때, `a`라는 `TestNumber` 객체의 참조가 전달되고, 이 `a`의 `num`값을 변경하면 원래 객체의 `num`값도 변경되는 것을 볼 수 있다. 이렇게 메서드를 통해 객체의 상태를 바꿀 수 있는 것이 `Call by Reference`방식이다.
'Java > JAVA 100 문제 풀이' 카테고리의 다른 글
자바 part.3 문제풀이 - TwoReturn2 (0) | 2023.07.20 |
---|---|
자바 part.3 문제풀이 - TwoReturn1 (0) | 2023.07.20 |
자바 part.3 문제풀이 - Call by reference (0) | 2023.07.09 |
자바 part.3 문제풀이 - Call by value (0) | 2023.07.09 |
자바 part.3 문제풀이 - instance method (0) | 2023.07.09 |