선릉역 1번 출구
2. 헷갈리는 문법 정리 본문
1. this란?
- 인스턴스 자신의 메모리를 가리킴
- 출력 시 this와 변수가 가지는 참조 값이 같음
2. 생성자 호출 시 this 유의사항
- Person() 생성자에서 this를 사용해 다른 오버로딩된 생성자를 호출할 수 있음
※ 이때 this 전에는 다른 statement를 호출하면 error가 발생함 > 인스턴스의 생성이 완전하지 않은 상태이기 때문
- 호출 후 선언에는 문제 없이 인스턴스 생성됨
3. 기본 생성자
- 객체 생성 후 기본 생성자를 선언하지 않아도 컴파일러가 자동으로 기본 생성자를 생성해주는데, 이때 오버 로딩된 생성자를 선언하는 경우 기본 생성자는 default로 생기지 않기 때문에 꼭 "직접" 선언이 필요함
- 좌측은 기본 생성자를 명시적으로 작성하여 new Person() 객체 생성 시 문제가 안된 반면, 우측은 기본 생성자를 작성하지 않자 Person person = new Person(); 시 error가 발생함
4. 매개 변수로 객체가 전달되는 경우가 발생할 수 있음
5. static 변수는 program을 구동할 때 메모리에 올라가는데, 이 때 (code - ISA / data - 상수, literal, static) 영역에서 data 영역에 생성됨
*static 변수는 처음에 프로그램이 프로세스가 돼서 메모리에 로드되고, 프로그램이 끝나고 unload될 때 사라짐
보통의 변수는 instance명.변수로 참조하였는데 static은 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조함
- static 메서드는인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수를 사용할 수 없음
=> 인스턴스 이름.static 메서드가 아닌 클래스 이름.static 메서드로 호출함
Simple하게 메모리로 생각하면 됨, 메모리에 로드되지 않는 값을 미리 호출하는 것일 수도 있어 불가능함
6. 변수의 유효 범위와 메모리
- static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음
- 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음
- 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없는 메모리가 할당됨
- 상황에 적절하게 변수를 사용해야 함
'Language > Java' 카테고리의 다른 글
4. 얕은 복사 vs 깊은 복사 (2) | 2023.11.21 |
---|---|
3. 싱글톤 패턴(singleton pattern) (0) | 2023.11.21 |
1. 개발 환경 셋팅하기 (0) | 2023.11.17 |
JAVA(3) (0) | 2023.01.16 |
객체 지향 (0) | 2023.01.16 |