2025 09 17 스파르타 코딩클럽 13일차
클래스와 객체
- 클래스(Class): 객체를 생성하기 위한 설계도.
- 객체(Object): 클래스에서 생성된 실체.
- 인스턴스화(객체화):
new 키워드를 사용하여 객체를 생성하는 것.
클래스 내부 구성
- 속성(Field): 객체의 상태(데이터)를 저장.
- 생성자(Constructor): 객체 생성 시 호출되는 특별한 메서드.
- 생성자를 정의하지 않으면 컴파일러가 기본 생성자(매개변수 없는
생성자)를 자동 제공.
- 직접 생성자를 정의하면 기본 생성자는 자동으로 제공되지 않음.
- 매개변수를 맞추지 않으면 컴파일 에러 발생.
2. JVM 메모리 영역
자바 프로그램 실행 시 JVM은 메모리를 다음 영역으로 나눔:
- Method Area (메서드 영역)
- 클래스 정보(메타데이터), static 변수, 상수, 메서드 코드 저장.
- Stack Area (스택 영역)
- 메서드 호출 시 지역 변수, 매개변수 저장.
- LIFO(Last-In First-Out) 구조.
- Heap Area (힙 영역)
new 키워드로 생성된 객체와 배열 저장.
- 변수에는 객체의 주소(참조 값) 가 저장됨.
3. Wrapper Class
- 정의: 기본 자료형(Primitive type)을 객체로 다룰 수 있도록 감싼
클래스.
- 종류:
int → Integer
double → Double
boolean → Boolean
char → Character 등
사용 이유
- 기본형을 객체처럼 다루기 위함.
- 제네릭, 컬렉션, 매개변수 등에서 객체 타입만 지원할 때 필요.
- 데이터 처리 기능(메서드 제공)이 있어 편리.
오토박싱 & 언박싱
- 오토박싱(Auto-boxing): 기본형 → 래퍼 클래스
- 언박싱(Unboxing): 래퍼 클래스 → 기본형
int a = 10;
Integer b = a;
int c = b;
래퍼 클래스는 힙 영역의 객체를 참조하기 때문에 기본형보다 처리 속도가
느릴 수 있음.
빠른 연산에는 기본형을 쓰는 것이 권장됨.
4. static
- 정의: 클래스 차원에서 공유되는 멤버.
- 특징:
- 객체 생성 없이
클래스명.변수,메서드 로 접근 가능.
- 프로그램 시작 시 메모리에 올라가고 종료될 때까지 유지됨.
- 메서드 영역(Method Area)에 저장됨.
- 인스턴스 멤버: 객체마다 독립적으로 생성, 힙 영역에 저장됨.
- static은 남발 시 메모리 낭비와 설계 혼란을 줄 수 있으므로 꼭 필요할
때만 사용.
5. final
- final 변수: 상수(값 변경 불가).
- final 메서드: 오버라이딩 불가.
- final 클래스: 상속 불가.
불변 객체
- 내부 상태를 변경할 수 없는 객체.
final + setter 메서드 없음 으로 설계.
- 대표 예시:
String, Integer 등 래퍼 클래스.