심심풀이 문제3 - Call by Value vs Call by Reference
뿌리튼튼 CS/Java2016. 10. 4. 20:25
문제
출력 결과는 무엇일까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public int getAge() { return age; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Test { static void increase(Person p, int weight) { p.age = 30; weight = 70; } public static void main(String[] args) { Person p = new Person("CGun", 29); int weight = 60; increase(p, weight); System.out.println(p.age + ", " + weight); } } | cs |
정답
해설
객체 변수는 Call by Reference 로 동작하므로 의도대로 값이 들어갔지만,
일반 변수는 Call by Value 로 동작하므로 increase 함수 내부 변수만 값이 증가하며
해당 함수가 종료되면 내부 변수는 증발한다.
'뿌리튼튼 CS > Java' 카테고리의 다른 글
심심풀이 문제5 - 예외 처리 흐름 (Exception handling flow) (0) | 2016.10.04 |
---|---|
심심풀이 문제4 - Object Assign (객체 대입) (0) | 2016.10.04 |
심심풀이 문제2 - String (0) | 2016.08.02 |
생성자를 쓰는 이유. 생성자의 필요성 (Why use constructors) (0) | 2016.08.02 |
심심풀이 문제1 - Object.equals() (0) | 2016.07.16 |