JAVA / 객체 자신을 가리키는 this

아몬드봉봉·2023년 12월 12일
0

Java

목록 보기
7/17

this가 하는 일

  • 인스턴스 자신의 메모리를 가리킴
  • 생성자에서 또 다른 생성자를 호출 할때 사용
  • 자신의 주소(참조값)을 변환함
  • 클래스 메소드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있다.
  • 인스턴스를 가리키는 참조와 인스턴스 자체는 다르다.

객체 자신의 대한 참조값을 가진다.
메소드 내에서만 사용된다.
객체 자신을 메소드에 전달하거나 리턴하기 위해 사용된다.
객체 생성자 내에서 사용할 경우, 다른 생성자를 호출한다.
매개 변수와 객체 자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 자신의 변수에 this를 사용한다.
static메소드에서는 사용할 수 없다.

생성된 인스턴스 메모리의 주소를 가짐

  • 클래스 내에서 참조변수가 가지는 주소 갑과 동일한 주소 값을 가지는 키워드
public static void main(String[] args) {
    BirthDay day = new BirthDay();
    day.setYear(2000);
}
  • day는 heep 메모리에 있는 해당 인스턴스의 메모리 위치를 가리키고 있다
  • this는 day가 가리키는 인스턴스의 메모리 위치를 똑같이 가리키는 역할을 함
  • this는 하나의 클래스에 멤버변수명과 파라미터변수명이 같을 경우에 멤버변수를 가리키는 용도로 사용
public void setYear(int year) {
    this.year = year;
}
  • this.변수명 으로 접근

생성자에서 다른 생성자를 호출하는 this

  • 클래스에 생성자가 여러개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음
  • 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음
public class Person {
 
    String name;
    int age;
    
    public Person() {
        this("no name", 1);
    }
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void showPerson() {
        System.out.println(name + ", " + age);
    }
    
    public static void main(String[] args) {
        Person person = new Person();
        person.showPerson();
    }
    
}

자신의 주소를 반환하는 this

public class Person {
 
    String name;
    int age;
    
    public Person() {
        this("no name", 1);
    }
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void showPerson() {
        System.out.println(name + ", " + age);
    }
    
    public Person getPerson() {
        return this;
    }
    
    public static void main(String[] args) {
        Person person = new Person();
        person.showPerson();
        
        System.out.println(person);
        
        Person person2 = person.getPerson();
        System.out.println(person2);
    }
    
}

출처

https://jaynamm.tistory.com/entry/JAVA-this-%EC%9D%98%EB%AF%B8%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95
https://velog.io/@imhyejeong/Java-this-%ED%82%A4%EC%9B%8C%EB%93%9C

profile
성장을 즐기는 백엔드 자바 개발자

0개의 댓글

관련 채용 정보