객체 향상된 for문 질문있습니다.
package class1.ex;
public class MovieReviewMain2 {
public static void main(String[] args) {
MovieReview[] reviews = new MovieReview[2];
MovieReview inception = new MovieReview();
inception.title = "인셉션";
inception.review = "인생은 무한 루프";
reviews[0] = inception;
MovieReview aboutTime = new MovieReview();
aboutTime.title = "어바웃 타임";
aboutTime.review = "인생 시간 영화";
reviews[1] = aboutTime;
for (MovieReview review : reviews) {
System.out.println("영화 제목: " + review.title + ", 리뷰: " + review.review);
}
}
}MovieReview inception이라는 변수를 통해서 .(dot)으로 실제객체에 접근하는 것으로 알고 있습니다. 그러나, 향상된 for문에서는 MovieReview(클래스) 다음에 오는 review를 통해서 접근하여 영화제목과 리뷰를 출력하는 것으로 보입니다.
여기서 질문이 있습니다.
for(MovieReview review : reviews)이 구문에서 review는 어디서 온것인가요?
review가 참조값에 접근할 수 있는 상세한 이유는 무엇일까요?
답변부탁드립니다!
답변 1
1
안녕하세요. 윤기섭님, 공식 서포터즈 코즈위버입니다.
MovieReview inception = new MovieReview();
위 코드에서 new MovieReview(); 부분이 실행되면 MovieReview 클래스를 참조하여 객체를 하나 생성하고 이 객체에 접근할 수 있는 주소값을 inception에 담게 됩니다. 그래서 inception 변수를 이용해 객체에 접근(dot 연산자를 이용)할 수 있지요. 이런 변수를 참조변수라고 하는데요, 객체의 주소값을 담고 있습니다. 추가로, 참조변수 또한 변수이기에 다른 변수에 복사하거나 혹은 다른 변수값으로 덮어씌울 수 있습니다. 예를들면,,
MovieReview inception = new MovieReview();
MovieReview myReview = inception;
이런 코드가 있다면 inception 과 myReview 는 같은 객체를 참조합니다.
for (MovieReview review : reviews) { 코드를 for문으로 풀어쓰면 다음과 같습니다.
for (int index = 0; index < reviews.length; index++) {
MovieReview review = reviews[index];
... code ...
}
reviews 배열의 0번째 있는 객체를 review 라는 변수에 담아 사용합니다.
그리고 이 review는 for문이 한바퀴 돌 때마다 소멸과 생성을 반복합니다. 이 부분은 변수의 스코프 부분 강의를 참조하시면 이해하실 수 있어요 :)
감사합니다.
질문있습니다
0
30
1
1번 문제 질문입니다.
0
35
1
음악플레이어 문제 중 코드질문
0
28
1
9장 상속 문제와 풀이 질문
0
39
1
강의 자료에 사소한 오타가 있습니다.
0
50
2
매서드 참조값 반환??
0
67
1
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
0
72
1
자바 기본편 - .(dot)에 관한 질문입니다!
0
85
1
공부방법
0
77
2
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
0
82
1
static method 질문
0
67
1
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
0
98
1
Method1에서 Student 객체
0
74
1
3강 18. null 질문
0
69
1
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
0
77
1
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
0
97
1
문의
0
104
1
9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다
0
90
1
상속과 그에 따른 메모리 구조 질문
0
62
1
call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다
0
74
1
수강기한
0
136
1
기본편 객체지향 프로그래밍에 대한 정의
0
88
1
섹션10 상속 메모리 구조 및 문제 관련 질문
0
87
1
추가 지식 학습
0
153
2





