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 메서드에 전달 된다.

 

  1. Integer 클래스 객체 생성 : integer는 java의 내장 클래스 중 하나로, 이 클래스의 객체는 int 값을 포장하거나, 여기서 100이라는 int값을 포장하는데 사용된다. 즉, 'Integer a = new integer(100); 이라는 코드는 100이라는 int값으로 Integer 객체를 생성하고 그 객체의 참조를 변수 a에 할당한다.
  2. sum 메서드 호출 : 'sum(a);' 라는 코드는 sum 메서드를 호출하면서 인자로 a를 전달한다. sum 메서드는 integer 타입의 매개변수를 받아들이며, 이 메서드는 전달받은 인자의 값을 출력한다.
이 코드를 실행하면, 다음과 같은 출력값을 출력한다.
sum()메서드 안에서 a 값 출력 : 100
main()메서드 안에서 a 값 출력 : 100

sum 메서드 내에서 a값을 변경하려 해도, 원래의 a값은 변하지 않는다. 이 경우에는 Integer가 불변(immutable) 객체이므로, 값을 변경할 수 없다.

 

 

 

 

인프런 - 예제로 공부하는 java 100 문제풀이.part.3