선릉역 1번 출구

2. 헷갈리는 문법 정리 본문

Language/Java

2. 헷갈리는 문법 정리

choideu 2023. 11. 21. 13:07

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. 변수의 유효 범위와 메모리

출처: https://gitlab.com/easyspubjava/javacoursework/-/tree/master/Chapter2/2-17

 

  • 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
Comments