본문 바로가기

⭐ SpringBoot/문법 정리

this와 this()의 차이점

728x90
반응형

자바에는 this와 this() 키워드가 있는데 이 키워드는 전혀 다른 키워드이다.

간단하게 말하자면, this는 인스턴스 자신을 가르키는 참조 변수이고 this()는 생성자를 뜻한다.

참조변수 : 더보기 클릭

더보기

# 참조변수란

참조변수(參照變數, reference variable)란 실제 값을 가진 변수가 아니라, 값이 들어가 있는 주소를 가지고 있는 변수를 말한다.

 

일반적으로 제공 되는 일반 변수는 int , float, long, double 등이다. 

즉 값이 저장되는 변수 라고 볼수 있다. 이것을 기본형 함수라고 한다.

 

참조변수는 보통 클래스들 인데 일반적으로 메모리 공간이 stack 공간과 heap 공간이 존재한다. 

그래서 클래스가 Testclass class=new Testclass() 라고 가정할때 class는 참조 변수로써 stack의 공간에서 주소 저장되어 4byte를 저장한다. 

 

그리고 그 참조변수의 주소값을 따라가서 heap 공간에 있는 Testclass()를 찾아갑니다. Testclass의 데이터의 크기는 사용자의 만드는거에 따라 다르다. 즉 참조변수는 주소값을 저장한다고 생각하면 된다.

this

class Car {
    String color; // 인스턴스 변수
    String gearType;
    int door; 
    
    Car(String color, String gearType, int door){
        this.color = color; 
        this.gearType = gearType;
        this.door = door;
    }
}

this 는 위 코드처럼 생성자의 매개변수로 선언된 변수의 이름이 인스턴스 변수와 같을 때 인스턴스 변수와 지역변수를 구분하기 위해서 사용한다.

Car() 생성자 안에서의 this.color는 인스턴스 변수이고, color는 매개변수로 정의된 지역변수이다.

static 메서드에서는 this를 사용하지 못한다.

매개 변수와 인수의 개념은 아래 더보기 클릭

더보기

# 생성자

생성자는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다.

 

# 매개변수와 인수의 개념

- 매개변수

매개변수란 아래의 그림에서 처럼 함수를 정의할 때 사용되는 변수를 의미한다. 

- 인수

그렇다면 인수는 무엇일까? 인수는 함수가 호출될 때 매개변수에 실제로 담기는 값을 의미한다.

this()

class Car{
    String color; // 인스턴스 변수
    String gearType;
    int door; 
    
    Car(){
        this("white", "auto", 4); // Car(String color, string gearType, int door)를 호출
    }
    
    Car(String color){
        this(color, "auto", 4);
    }
    
    Car(String color, String gearType, int door){
        this.color = color; 
        this.gearType = gearType;
        this.door = door;
    }
}
this()는 같은 클래스의 다른 생성자를 호출할 때 사용한다. 위 코드의 Car() 생성자와 Car(String color) 생성자는 this()를 통해 모두 Car(String color, String gearType, int door) 생성자를 호출하고 있는 것이다.
728x90
반응형

'⭐ SpringBoot > 문법 정리' 카테고리의 다른 글

List<T>  (0) 2024.05.27
생성자를 사용해야 하는 이유  (0) 2022.04.01