자바 메모리 구조
- 메서드 영역: 모든 영역에서 공유, 클래스 정보, static
- 스택 영역 : 지역변수, 중간 연산 결과, 메소드 호출정보(종료되면 stack에서 삭제), 각 쓰레드 별로 생성됨
- 힙 영역 : 객체(인스턴스), 배열이 생성되는 영역 , GC가 이루어지는 영역
* 인스턴스는 내부에 변수와 메소드를 가진다. 하지만 인스턴스가 생성될 때, 변수에는 메모리(힙에)가 할당 되지만 메서드에 대해서는 새로운 메모리를 부여하지 않는다. 메서드는 메서드 영역에서 코드를 호출하여 수행하게 된다.
static
- 인스턴스 끼리 공유할 수 있게 한다. (메서드 영역을 참조), 붕어빵 틀에서 나온
- static이 붙은 필드를 클래스,static, 정적 변수라고 함(static 안 붙은 필드는 인스턴스 변수)
- static이 붙으면 클래스 붙어서, 메서드 영역에 생성 된다! (클래스 레벨)
- static 메소드는 객체 생성 없이 사용은 가능 하지만, 당연히 인스턴스 레벨단에 변수나 메서드에는 접근X(컴파일 에러)
- main함수도 static 이여서 객체 생성 없이 사용이 가능했던 것, 따라서 정적메소드인 main에서 객체 생성 없이 다른 메소드를 호출하려면 당연히 그 메소드도 정적 메소드인 static 이여야 함
final
final은 메소드 ,클래스, 변수에 다 사용 가능하다. 매우 유용한 제약(제약이 많아야 좋은 코드다.)
final은 최초 선언 후, 딱 1번만 값 할당 가능하다.
상수 사용이유 : 유지보수가 편해지고, 매직넘버(코드를 읽을 때 보이는 숫자, 수정자는 이 숫자의 의미를 알기 쉽지 않음)를 없앨 수 있다.
'JAVA' 카테고리의 다른 글
[김영한 자바강의] 상속 (0) | 2024.11.21 |
---|---|
김영한 자바강의 6강 - 접근 제어 (0) | 2024.06.18 |
김영한 자바강의 5강 - 패키지 import (0) | 2024.03.12 |
김영한 자바 강의 2강 -기본형과 참조형 (1) | 2024.03.05 |
김영한 자바 강의 1강 - 클래스와 데이터 (3) | 2024.01.09 |
최근댓글