답변 2
1
안녕하세요, 질문의 문제 시분초가 조금 이상합니다.
19:40 부터 시작되는 문제 말씀이실까요? (오류 라인 찾기)
우선, 정말 좋은 질문이십니다. 다들 왜 인지 질문을 안해주시더라고요..
생성자에서의 this는 멤버 변수를 가지고 있는 객체를 대신하는 단어로 동작하지만, 사실 없어도 변수명(멤버변수명)이 같다면 인식하긴 합니다. 하지만 보통 외부변수와 같은 이름으로 쓰는 경우가 있습니다.
예를 들어서 멤버변수 이름도 age, 외부에서 오는 파라미터도 age로 작성하는 경우가 있죠.
(왜 그러냐고 물으시면, 전통적으로 그러는 경우도 있고 의미가 명확해서 그 단어를 의미적으로 사용하는 경우도 있습니다. 개발자마다 다르게 사용할 수 있지만, 제가 Java 개발자로 있을 때는 같은 경우가 더 많았습니다.)
그렇게 되면 외부에서 온 변수와 내부 멤버변수를 구별하기 위해서 앞에 할당되는 멤버변수 앞에 this.를 붙여서 구별합니다.
지금은 외부에서 오는 변수가 val이고, 멤버변수가 name이라 Java가 해당 코드를 해석할 때 구별해서 충분히 이해하기 때문에 작성하지 않아도 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 강범준님.
자바에서 this
키워드는 객체 자신의 인스턴스를 참조할 때 사용됩니다. 주로 인스턴스 변수와 매개변수의 이름이 동일할 때 구분하기 위해 사용됩니다. 따라서 상황에 따라 this
가 필요할 때와 그렇지 않을 때가 있습니다.
this
를 사용하는가?this
를 사용하여 인스턴스 변수를 명확히 구분합니다. public class Example {
private String name;
public Example(String name) {
this.name = name; // this.name은 인스턴스 변수, name은 매개변수
}
}
this
를 사용할 수 있습니다.this
가 필요하지 않은가?this
가 필요 없습니다.this
는 사용하지 않습니다.강범준님께서 말씀하신 경우, 해당 생성자의 매개변수와 인스턴스 변수의 이름이 동일하지 않다면 this
를 사용하지 않아도 됩니다. 반대로, 동일하다면 this
를 통해 명확하게 구분하는 것이 좋습니다.
자바에서 this
키워드를 사용하는 다양한 사례에 대한 설명을 읽어보고 싶으시면, 다음 링크를 참조하시기 바랍니다:
- 자바의 this
키워드와 그 사용 케이스
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.