강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

강범준님의 프로필 이미지
강범준

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 3회 코드해석 문제

2023 3회 19:31 자바 오류찾기

해결된 질문

작성

·

83

0

생성자에거 왜 name 앞에 this. 이 안붙나요?

어떤건 붙고 안붙고 기준이 있나요?

답변 2

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요, 질문의 문제 시분초가 조금 이상합니다.

19:40 부터 시작되는 문제 말씀이실까요? (오류 라인 찾기)

 

우선, 정말 좋은 질문이십니다. 다들 왜 인지 질문을 안해주시더라고요..

 

생성자에서의 this는 멤버 변수를 가지고 있는 객체를 대신하는 단어로 동작하지만, 사실 없어도 변수명(멤버변수명)이 같다면 인식하긴 합니다. 하지만 보통 외부변수와 같은 이름으로 쓰는 경우가 있습니다.

예를 들어서 멤버변수 이름도 age, 외부에서 오는 파라미터도 age로 작성하는 경우가 있죠.

(왜 그러냐고 물으시면, 전통적으로 그러는 경우도 있고 의미가 명확해서 그 단어를 의미적으로 사용하는 경우도 있습니다. 개발자마다 다르게 사용할 수 있지만, 제가 Java 개발자로 있을 때는 같은 경우가 더 많았습니다.)

 

그렇게 되면 외부에서 온 변수와 내부 멤버변수를 구별하기 위해서 앞에 할당되는 멤버변수 앞에 this.를 붙여서 구별합니다.

 

지금은 외부에서 오는 변수가 val이고, 멤버변수가 name이라 Java가 해당 코드를 해석할 때 구별해서 충분히 이해하기 때문에 작성하지 않아도 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 강범준님.

자바에서 this 키워드는 객체 자신의 인스턴스를 참조할 때 사용됩니다. 주로 인스턴스 변수와 매개변수의 이름이 동일할 때 구분하기 위해 사용됩니다. 따라서 상황에 따라 this가 필요할 때와 그렇지 않을 때가 있습니다.

언제 this를 사용하는가?

  1. 같은 이름의 변수 구분: 매개변수와 인스턴스 변수의 이름이 같다면 this를 사용하여 인스턴스 변수를 명확히 구분합니다.
   public class Example {
       private String name;

       public Example(String name) {
           this.name = name; // this.name은 인스턴스 변수, name은 매개변수
       }
   }
  1. 메소드 체이닝: 같은 객체에서 여러 메서드를 호출할 때, 메서드가 다른 메서드를 연이어 호출하도록 하기 위해 this를 사용할 수 있습니다.

언제 this가 필요하지 않은가?

  • 인스턴스 변수와 매개변수의 이름이 다를 때는 this가 필요 없습니다.
  • 메소드나 생성자 내부에서 지역 변수를 참조할 때도 this는 사용하지 않습니다.

강범준님께서 말씀하신 경우, 해당 생성자의 매개변수와 인스턴스 변수의 이름이 동일하지 않다면 this를 사용하지 않아도 됩니다. 반대로, 동일하다면 this를 통해 명확하게 구분하는 것이 좋습니다.

관련 링크

자바에서 this 키워드를 사용하는 다양한 사례에 대한 설명을 읽어보고 싶으시면, 다음 링크를 참조하시기 바랍니다:
- 자바의 this 키워드와 그 사용 케이스

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강범준님의 프로필 이미지
강범준

작성한 질문수

질문하기