20201023_TIL
by Haebin Seo
오늘 한 일
- Java 공부
- this
- 자신의 메모리(생성된 인스턴스 스스로)를 가리킴
public class Person { String name; int age; public Person(String name, int age) { this.name = name; /*자신의 메모리를 가리킴*/ this.age = age; /*자신의 메모리를 가리킴*/ } }
- 생성자에서 다른 생성자를 호출
public class Person { String name; int age; public Person() { this("이름없음", 1); /*생성자에서 다른 생성자를 호출*/ } public Person(String name, int age) { this.name = name; this.age = age; } }
note: this를 이용해 다른 생성자를 호출할 때는 그 이전에 어떠한 statement도 사용할 수 없다. 클래스 생성이 완료되지 않은 시점에서 다른 코드가 들어와 있는 것이기 때문.
- 자신의 주소를 반환함
public class Person { String name; int age; public Person returnSelf() { return this; /*자신의 주소를 반환함*/ } }
- 자신의 메모리(생성된 인스턴스 스스로)를 가리킴
- static 변수
클래스 변수
라고도 하며, 클래스의 모든 인스턴스에서 공유하는 변수가 필요할 떄 사용. (멤버변수는 인스턴스 변수라고도 한다.)- static 변수는 인스턴스가 생성될 때 마다 다른 메모리를 가지는 것이 아니라 프로그램이 메모리에 적재(load)될 때 데이터 영역의 메모리에 생성된다.
따라서 인스턴스의 생성과 관계없이 클래스 이름으로 직접 참조한다.
class Student { static int serialNum; } ː ː Student.serialNum = 100; //serialNum이 static 변수
- heap이 아닌 static memory 영역에 저장된다. 해당 영역에는 상수, 리터럴, 전역 변수, static 변수 등이 저장되며, 프로그램의 시작부터 종료까지 메모리에 남아있는다.
-
변수의 유효 범위
변수 유형 선언 위치 사용 범위 메모리 생성과 소멸 지역 변수(로컬 변수) 함수 내부에 선언 함수 내부에서만 사용 스택 함수가 호출될 때 생성되고 함수가 끝나면 소멸함 멤버 변수(인스턴스 변수) 클래스 멤버 변수로 선언 클래스 내부에서 사용하고 private이 아니면 참조 변수로 다른 클래스에서 사용가능 힙 인스턴스가 생성될 때 힙에 생성되고, 가비지 컬렉터가 메모리를 수거할 때 소멸됨 static 변수(클래스 변수) static 예약어를 사용하여 클래스 내부에 선언 클래스 내부에서 사용하고 private이 아니면 참조 변수로 다른 클래스에서 사용가능 데이터 영역 프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸됨 - singleton 패턴(static 응용)
- 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식
- 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식
- this
참조
Do it! 자바 프로그래밍 입문: https://www.inflearn.com/course/자바-프로그래밍-입문/dashboard
Subscribe via RSS