Java/JAVA 100 문제 풀이
자바 part.3 문제풀이 - Call by reference
진이최고다
2023. 7. 9. 14:57
Call by value -> Call by reference 메서드 구현
메인 메서드에서 100을 보냈을 때 값이 수정되게끔 Call by reference 방식으로 코드를 수정하시오.
이 문제는 앞서 다뤘던 문제의 Call by value방식을 Call by reference 방식으로 수정해서 보내라는 의미다.
a 값이 같은 결과가 나오도록 코드를 수정해보시오.
public class method_methodCall2 {
public static void sum(Integer a) {
System.out.println("sum()메서드 안에서 a 값 출력 : " + a);
}
public static void main(String[] args) {
// [1] : 변수 선언 및 메서드 호출
// Wrapper 클래스의 integer 클래스 타입으로 변수 a를 선언하고, new로 객체를 생성하여 해당 주소 값을 메서드로 보낸다.
Integer a = new Integer(100);
sum(a);
// [2] : 출력
System.out.println("main()메서드 안에서 a 값 출력 : " + a);
}
}
이 java코드는 메서드 호출과 integer객체의 사용으로, 메인 메서드 내에서 integer 객체가 생성되고, 그 객체는 sum 메서드에 전달 된다.
- Integer 클래스 객체 생성 : integer는 java의 내장 클래스 중 하나로, 이 클래스의 객체는 int 값을 포장하거나, 여기서 100이라는 int값을 포장하는데 사용된다. 즉, 'Integer a = new integer(100); 이라는 코드는 100이라는 int값으로 Integer 객체를 생성하고 그 객체의 참조를 변수 a에 할당한다.
- sum 메서드 호출 : 'sum(a);' 라는 코드는 sum 메서드를 호출하면서 인자로 a를 전달한다. sum 메서드는 integer 타입의 매개변수를 받아들이며, 이 메서드는 전달받은 인자의 값을 출력한다.
이 코드를 실행하면, 다음과 같은 출력값을 출력한다.
sum()메서드 안에서 a 값 출력 : 100
main()메서드 안에서 a 값 출력 : 100
sum 메서드 내에서 a값을 변경하려 해도, 원래의 a값은 변하지 않는다. 이 경우에는 Integer가 불변(immutable) 객체이므로, 값을 변경할 수 없다.