티스토리 뷰
출처 : DO IT! 자바프로그래밍 (저 : 박은종)
# This 예약어
-> this는 생성된 인스턴스 스스로를 가리키는 예약어이다.
class Birthday {
int day;
int month;
int year;
public void setYear(int year) {
this.year = year;
}
public void PrintThis() {
System.out.println(this);
}
}
public class Exam1 {
public static void main(String[] args) {
Birthday bDay = new Birthday();
bDay.setYear(2000);
System.out.println(bDay);
bDay.PrintThis();
}
}
this가 어떤 의미를 갖는지 간단하게 보자.
인스턴스를 가리키는 변수를 참조 변수라고 한다.
참조 변수 -> '클래스 이름@메모리 주소' 문자열 값으로 나온다.
위 코드를 살펴보면 System.out.println(bDay) 와 bDay.PrintThis 의 호출 값은 같다.
클래스 코드에서 사용하는 this는 생성된 인스턴스 자신을 가리키는 역할을 한다.
this를 이해하기 위한 메모리 역할
스택은 정적 메모리 이고 heap은 동적메모리이다.
main함수의 day가 가리키는 인스턴스와 Birthday 클래스의 setYear 메스드에서 this가 가리키는 인스턴스가 같다.
※ 생성자에서 다른 생성자를 호출하는 this
class Person {
String name;
int age;
Person(){
this("이름없음",1);
}
Person(String name, int age){
this.name = name;
this.age = age;
}
}
public class Exam2 {
public static void main(String[] args) {
Person p1 = new Person();
System.out.println(p1.name);
System.out.println(p1.age);
}
}
Person 클래스에서는 생성자 2개를 만들었다.
하나는 디폴트 생성자 -> 이름 없음 과 1 을 대입
다른 하나는 이름과 나이를 입력받는 생성자
Person클래스의 디폴트 생성자는 this를 통해서 Person(String, int) 생성자를 호출한다.
## Static 변수
변수를 여러 클래스에서 공통으로 사용하기 위해서 static 변수를 활용한다.
## 변수 유효 범위
- 지역변수 : 함수나 메스드 안에서만 사용할 수 있는 지역 변수
- 멤버변수 : 클래스 안에서 사용하는 멤버 변수(인스턴스 변수)
- static변수 : 여러 인스턴스에서 공통으로 사용할 수 있는 static 변수(클래스 변수)
# 싱글톤 패턴
- 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤 패턴이라고 한다.
출처 : DO IT! 자바프로그래밍 (저 : 박은종)
'개인공부 > JAVA' 카테고리의 다른 글
JAVA - Inner Class, Lambda , Stream (0) | 2021.03.21 |
---|---|
JAVA - CLASS (0) | 2021.03.16 |
JAVA - INTERFACE (0) | 2021.03.12 |
JAVA - Abstract (0) | 2021.03.10 |
JAVA - Class와 Object (1) (0) | 2021.03.02 |