반응형
생성자
- 리턴타입이 없는 메소드(void도 없음)
- 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어 준다.
- 매개값이 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어주지 않는다.
static 블록
- 클래스가 메모리로 로딩될 때 자동으로 실행
- 계산 작업을 하고나서 그 결과를 static 변수의 초기값으로 주고 싶을 때 사용
- 객체 생성 없이도 사용할 수 있기 때문에 생성자에서 초기화 작업을 하지 않는다.
final 키워드
- 클래스에 final → 상속 허용하지 않음
- 변수에 final → 한 번 초기화 되면 값을 변경할 수 없음
- 메소드에 final → 오버라이딩 허용하지 않음
this 키워드
- 지역변수와 속성(객체 변수, 정적 변수)의 이름이 같은 경우 지역 변수가 우선한다.
- 객체 변수와 이름이 같은 지역변수가 있는 경우 객체의 변수를 사용하려면 this를 접두사로 사용한다.
- 정적 변수와 이름이 같은 지역 변수가 있는 경우 정적 변수를 사용하려면 클래스명을 접두사로 사용한다.
메모리 영역의 static 영역(클래스 영역)을 메소드 영역이라고도 부르는 이유
new 연산자로 객체를 생성했을 때 JVM에서는 생성된 객체의 속성만 힙에 올리고, 메소드는 정적 멤버로 바꾸어서 static 영역에 올린다. 따라서 특정 클래스의 객체를 무한히 생성해도 메소드 자체는 static영역에 한번 올라가게된다.
클래스 로딩이 이뤄지는 이유
어떤 메소드가 호출되려면, 먼저 그 메소드를 갖고 있는 클래스 파일이 메모리에 로딩되어있어야 한다. 그래서 클래스를 실행할 때 *.class 파일을 찾아서 메모리에 로딩하는 것이다.
(그래서 JDBC 연결 시 Class.forName() 메소드를 이용해 해당 클래스를 찾아 메모리에 로딩 시키는 것임)
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (0) | 2023.04.17 |
---|---|
예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (0) | 2023.04.15 |
예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (0) | 2023.04.13 |
댓글