Search
Duplicate

9, 9 + 번 문제 정답

9번 문제 정답

해설

for each문을 사용하는 경우 값의 수정이 불가능하다
for(int num : arr) { num++; }
Java
복사
arr 배열의 값은 Primitive Type 이므로 num 참조변수는 arr 배열의 값을 단순히 복사한 값이다. 따라서 num을 변화시킨다 하더라도 원본 arr 배열의 값의 변화는 없다. (Call By Value 개념)
for(Person p : people) { p.age++; }
Java
복사
people은 Reference 타입이므로 p에 실제 people 배열에 담긴 Person 객체의 Reference가 담긴다. 따라서 p.age++ 연산을 수행하면 실제 객체를 찾아가서 값을 변화시키게 된다. (Call By Refernce 개념)

9 + 번 문제 정답

해설

참조변수 p 에 새롭게 생성한 Person 객체의 Reference를 담았다. 하지만 이 p라는 참조변수는 for each 문장이 끝나는 순간 사라지게 되고, 원래의 people 배열에는 영향을 주지 못한다. 따라서 people[i] 배열에 접근하려고 할 때 NullPointerException이 발생한다.