자바 질문

자바 질문

작성일 2024.04.07댓글 1건
    게시물 수정 , 삭제는 로그인 필요

class Rectangle{
private int x;
private int y;
private int width;
private int height;

public Rectangle(int x, int y, int width, int height{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
}


이 코드에서 this가 뭔가요??
this 가 이해가 안됩니다...


#자바 질문 #자바 질문 사이트 #자바 면접 질문 리스트 #자바 경력 면접 질문 #자바 면접 예상 질문 #자바 백엔드 면접 질문 #자바 스프링 면접 질문 #자바 면접 질문 github #자바 cs 질문 #자바 기초 질문

profile_image 익명 작성일 -

안녕하세요.

this는 객체 자신을 이야기 합니다.

위 코드에서 Rectangle 클래스를 정의했고,

이 클래스 안에는 x, y, width, height 4개의 필드가 존재하지요.

그런데 클래스를 정의했다고해서 이 필드들이 실제로 만들어 진것이 아닙니다.

어떻게 보면 객체를 만들기 위한 설계도이지요.

이 필드들을 사용하려면 실물을 만들어야 겠지요.

Rectangle r1 = new Rectangle(10,10,100,100);

이렇게 new를 통해 객체를 생성하게 되면, 메모리에 실제로 필드들이 만들어 지지요.

이 필드들은 현재 만든 객체의 일부이지요.

new를 통해 객체를 만들고 나면 해당 객체의 참조주소가 반환되고, 그 주소가 r1에 저장됩니다.

그리고 필드에 접근을 할때 r1.x 이런형태로 접근하지요. 물론 여기에서는 private이기 때문에

접근이 금지되지만, 참조주소를 통해 접근하게 되지요.

이 참조주소가 객체를 의미하는데, 객체 내부에서 자신의 참조주소를 this라는 참조변수에 저장하게 됩니다.

Rectangle r1 = new Rectangle(10,10,100,100);

Rectangle r2 = new Rectangle(20,20,100,100);

이렇게 하면 두개의 객체가 만들어집니다.

각 객체마다 독립적인 x,y,width,height 가 생성되겠지요.

첫번째 객체의 x는 r1.x 일것이고,

두번째 객체의 x는 r2.x 이겠지요.

this라는 것은 r1이 참조하는 객체 내부에서 실행되는 경우 자신을 의미합니다. 즉, r1이 가지고 있는

참조주소나 this가 가지고 있는 참조주소가 동일하지요.

this도 객체 자신을 참조하므로 r1의 객체와 r2의 객체마다 존재하게 됩니다.

참고하시고, 궁금하신 부분이나 이해안되는 부분 있으시면 질문주세요.

자바 질문

자바에서 클래스 생성할때마다 패키지는 생성이 안되는데 이유가 무엇인가요?... 이것을 해결하는 방법은 패키지를 오른쪽 클릭을 해서 나오는 메뉴에서 자바...

자바 스프링 질문

자바 스프링 배우려면 자바의 어느정도 지식을 가지고 있어야 하기 편한가요? 배열까진 이해가 잘 되는데 그 후 class나 list, map 공부하고 있는데 슬슬 어려워지네요 ㅜ.....

자바 질문

자바 String longest = ""; 이렇게 선언 하던데 이 >>""<< 는 어떻게 쓰이는건가요? ""가 가지는 의미는 무엇인가요? "" 는 그냥 빈 문자열입니다. 말 그대로 비어있는...

마인크래프트 자바 에디션 질문

제가 베드락 에디션을 플레이하다가 최근에 자바 에디션을 즐기고 있는데요 베드락은 크레이티브 모드 때 날다가 멈추면 그 자리에서 멈추는데 자바는 그 자리에서 안 멈추고...

인텔리제이 html, 자바스크립트 성능 질문

자바에 비해서 뭔가 다른것같은데 왜 그런가요? 보통 html, 자바스크립트에는 다른 프로그램을 쓰나요? 인텔리제이는 자바에서 보통 쓰지요. vscode나 다른 IDE를 쓰는 게...