Java/JAVA 100 문제 풀이
자바 part.3 문제풀이 - Call by value
진이최고다
2023. 7. 9. 14:13
값의 의한 호출(call by value)
메서드로 인자 전달시 정수 100을 보냈을 때의 아래 코드의 결과를 말해보시오.
이 문제는 자바의 기본형 타입과 참조형 타입의 다양한 메서드 호출 방식에 대해서 아는지를 묻는 문제이다.
public static void sum(int a) {
a += 400;
System.out.println(a);
}
public static void main(String[] args) {
int a = 100;
sum(a);
System.out.println(a);
}
이 코드는 '값에 의한 호출(call by value)'에 대한 예제로, java에서 기본형(primitive type)변수를 메서드에 전달할 때는 항상 '값에 의한 호출' 방식을 사용한다. 이는 메서드에 전달된 변수의 본사본이 만들어져서 그 본사본을 메서드에서 사용된다는 의미이다.
따라서, `sum` 메서드에서 `a`의 값이 변경되더라도 원본 변수인 `main` 메서드의 `a`에는 영향을 미치지 않는다.
위 코드에서 메서드 `sum(a)`는 전달받은 인자 `a`에 `400`을 더한 후 그 값을 출력한다. 따라서 `sum(a)`를 호출하면 출력되는 값은 `100 + 400 = 500` 입니다.
그런 다음 `main` 메서드에서 `a`의 값을 출력하면, 이전에 언급했듯이 `sum`메서드에서 `a`의 값이 변경되어도 `main`메서드의 `a`에는 영향을 미치지 않으므로, 여전히 `a`의 값은 `100`이다.
따라서, 이 코드를 실행하면 출력 결과는 다음과 같은 출력값이 나온다.
500
100