자바 기본 문법(3)

오정빈·2025년 9월 17일

내일배움캠프

목록 보기
11/22

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 등 래퍼 클래스.

0개의 댓글