Hyeok의 웹 개발 블로그

<2025.02.26> JAVA 문법 종합반 [2-1]~[2-5] 본문

TIL/Java

<2025.02.26> JAVA 문법 종합반 [2-1]~[2-5]

Yhyeok 2025. 2. 26. 23:57
  • Class (클래스)
    - 객체를 만들 때 필요한 청사진 (설계도)
  • 객체 (object)
    - 실제로 존재하는 것
    - 주변에서 볼 수 있는 컴퓨터, 계산기, 자동차 같은 사물이 객체
    - 덧셈, 뺄셈 등 눈에 보이지 않는 것들도 무형의 객체가 될 수 있다.
    - 클래스가 준비되어 있다면 클래스를 기준으로 여러 객체들을 만들어 낼 수 있다.

 

 

  • 클래스 구조 
    1. 속성

    2. 생성자

    3. 기능
  • 속성(property, field)
    - 객체는 속성(특징)을 작성하는 곳
    - 객체를 생성해야 속성에 접근 가능
    - 속성들은 '변수' 로 표현
    - property, field 라고도 표현
    - 사람의 속성을 예로 들면 나이, 이름, 주소 등이 있다.
  • 생성자(constructor)
    - 객체를 만들 때 사용
    - 객체를 어떻게 만들지 정의해 놓는 것
    - 생성자가 없으면 클래스를 객체화 시킬 수 없다.

    [생성자의 특징]
    - 변환 자료형이 없다.
    - 클래스 명과 이름이 같다.
    - 여러 개가 존재할 수 있다.
  • 기능(메서드)
    - 객체의 기능을 나열하는 곳
    - 기능은 메서드로 표현
    - 상상하는 모든 기능을 구현 가능 (자기소개, 더하기, 걷기 기능 등)
    - 하지만 클래스와 관련된 기능을 작성하는 것이 좋음
    - 메서드를 활용하는 것이 객체의 기능을 활용하는 것이다.
  • 게터(getter) 와 세터(setter)
    - 게터란 클래스의 속성을 가져올 때 사용되는 기능을 의미합니다.
    - 세테란 객체의 속성을 외부에서 설정할 수 있게 해주는 기능입니다.

 

  • JVM 메모리 구조

 

 

 

  • 래퍼 클래스
    - 기본자료형을 객체로 감싸는 클래스

 

  • 참조형 (Reference Type)
    - 변수에 객체가 담기면 해당 변수를 참조형 변수라고 말한다.
    - 참조형 변수는 데이터가 저장된 메모리 주소를 가리킨다. (Heap 메모리 주소)
    - 객체 데이터는 Heap 영역에 저장되어 있기 때문이다.
    - 객체, 배열 등이 참조형에 속한다.


 

 

  • 오토박싱 , 언박싱
  • 오토박싱(Auto-boxing) [기본형 > 래퍼형으로 변환하는 과정]
    - Integer는 참조형(객체)이지만 기본형 int 값을 직접 대입할 수 있다.
    - 내부적으로 컴파일러가 자동으로 Integer.valueof(10)을 호출하여 객체를 생성하기 때문.
  • 오토 언박싱(Auto-unboxing) [래퍼형 > 기본형으로 변환하는 과정]
    - num은 Integer 객체(참조형 변수)지만 기본형 int 변수에 대입 가능
    - 내부적으로 컴파일러가 자동으로 num.intvalue()를 호출하여 기본형으로 변환
  • Static
    - 모든 객체가 함께 사용하는 변수나 메서드를 만들때 사용
    - 객체를 만들지 않아도 클래스 이름만으로 바로 사용 가능
    - 모든 객체가 같은 값을 공유 (공용 게시판이라고 생각하면 편함)
    - 변수와 메서드는 한 번만 생성되고 Method Area에 저장

 

  • Static 활용

 

 

  • 인스턴스 멤버 (인스턴스 변수 + 인스턴스 메서드)
    - 객체를 만들 때 마다 생성되는 변수와 메서드
    - 객체를 생성한 후에만 사용 가능
    - 각 객체가 개별적으로 값을 가짐
    - 인스턴스는 Heap 영역에 위치
  • 인스턴스 변수
    - 객체가 생성될 때마다 만들어지는 변수
    - 객체를 생성한 후 접근 
    - name 변수는 각 객체마다 별도로 저장
  • 인스턴스 메서드
    - 객체의 속성을 활용하는 메서드
    - 객체가 생성된 후에만 사용

  • 클래스 멤버 (클래스 변수 + 클래스 메서드)
    - 클래스 자체에 속하는 변수와 메서드 
    - static 키워드를 사용해서 선언
    - 해당 클래스로 만들어진 객체가 공유해서 사용
    - 클래스가 로드될 때 Method Area 에 적재
    - 객체 생성 없이 사용 가능
  • 클래스 변수
    - 클래스가 로드 될 때 한번만 생성
    - 모든 객체가 공유하는 변수
    - Heap 이 아니라 Method Area 에 저장
    - 객체를 만들지 않아도 클래스명, 변수명으로 접근 가능
  • 클래스 메서드 
    - 클래스에 속하는 메서드 
    - 객체 없이 사용
    - 클래스 변수만 사용할 수 있고 인스턴스 변수는 사용 X
  • final
    - 변수는 변경이 불가능하게 만듬
    - 클래스는 상속할수 없게 만듬
    - 메서드는 수정할 수 없게 만듭니다. (오버라이딩 불가)

 

  • 상수 (Constant)
    - 상수는 변하지 않고 항상 일정한 값을 갖는 수 
    - Java에서 상수는 대문자로 표현
    - 프로그램 실행중에 절대 변경되서는 안되기 때문에 static final 키워드를 사용
    - static으로 선언된 변수는 프로그램 시작시 한 번만 초기화되고 모든 인스턴스에서 같은 값을 공유
  • 불변 객체 (Immutable Object)
    -불변객체는 내부 상태를 변경X
    - final을 속성에 활용
    - 세터 없이 설계
    - 변경이 필요할 경우 새로운 객체를 만들어야함
    ex) String, Interger, 래퍼클래스 등