개발 언어/자바 java

자바 [java] this 란?/ 의미 / 사용법

삐뚤어진 개발자 2020. 4. 21.

자바 프로그래밍을 하다보면 this 라는 키워드를 자주 사용하게 됩니다.

 

this 란?

this는 주로 생성자와 메소드의 매개변수 이름이 필드와 비슷하거나 같은 경우,

헷갈리지 않도록, 인스턴스 멤버인 필드임을 명시하고자 할때 사용됩니다.

 

말로 설명하기엔 조금 어려우니 예시를 들어 보겠습니다.

 

 

this 사용 예시 [1]

Test.class

public class Test{

  //클래스 필드
  int a;

  //메소드
  void set_test(int a){
    // 클래스 필드 변수 a값에 set_test 매개변수 a값을 넣음.
    this.a = a;
  }
}

 

Test 클래스 필드에서 선언한 변수 a 와 set_test 메소드의 매개변수 a 이름이 같습니다.

이럴때, this를 사용하여 a를 특정해주는 것입니다.

this.a 는 클래스 필드의 변수, a는 set_test의 메소드 매개변수 입니다.

 

+ 다른 클래스에서 아래와 같이 사용하게 되면 Test 클래스의 변수 a의 값은 4로 됩니다.

 

public class other_Test{

  void set_test(int a){
    // Test 클래스 객체화
    Test t = new Test();
    t.set_test(4); // 4를 넣어 set_test 메소드를 사용
  }
}

 

this 사용 예시 [2] 클래스 생성자 사용

Test.class

public class Test{

  // 생성자 선언
  public Test(int a){
  	this.a = a;
  }
  
  //메소드
  public int use_test(){
    return a;
  }
}

 

위와 같이 클래스 생성자로 선언하여 사용할 수도 있습니다.

아래와 같이 다른 클래스에서 사용할 수 있겠죠.

 

public class other_Test{

  void set_test(int a){
    // Test 클래스 객체화
    Test t = new Test(4);
    t.use_test(); // use_test 메소드를 사용 => 4를 리턴하게 됩니다.
  }
}

 

 

 

물론 변수 이름을 다르게 한다면, this를 사용하지 않을 수도 있습니다.

public class Test{

  //클래스 필드
  int b;

  //메소드
  void set_test(int a){
    // 클래스 필드 변수 a값에 set_test 매개변수 a값을 넣음.
    b = a;
  }
}

 

댓글