☕
java handbook
  • Part 01. Hello World!
    • Java 환경설정
    • Java 학습 Flow
    • JVM
    • 변수
      • 상수와 리터럴
      • 기본형과 참조형
      • 문자와 문자열
  • Part 02. 연산자
    • 증감 연산자와 부호 연산자
    • 형변환 연산자와 자동 형변환
    • 사칙 연산자와 산술변환
    • Math 클래스와 나머지 연산자
    • 비교 연산자와 문자열의 비교
    • 논리 연산자와 비트 연산자
    • 조건 연산자와 대입 연산자
  • Part 03. 조건문과 반복문
    • IF
    • SWITCH
    • FOR
    • 임의의 정수 만들기
    • WHILE
    • break 와 continue
  • Part 04. 배열
    • 배열의 길이와 초기화
    • 배열 연습하기
    • String 배열
    • 2차원 배열
    • Array
  • Part 05. 객체지향
    • 클래스와 객체
    • 객체의 생성과 배열
    • 클래스의 정의
    • 변수의 종류
    • 메서드
    • 기본형 매개변수 와 참조형 매개변수
    • static 메서드와 인스턴스 메서드
    • 오버로딩
    • 생성자
    • this 와 this()
    • 변수의 초기화
Powered by GitBook
On this page
  • 초기화 방법
  • 명시적 초기화(=)
  • 초기화 블럭
  • 생성자 초기화
  1. Part 05. 객체지향

변수의 초기화

수동 / 자동 초기화

  • 지역 변수는 수동으로 초기화 해야합니다.

    • 지역 변수가 동작하는 스택 메모리는 재사용이 빈번하기 때문에 매번 초기화 해주면 성능이 떨어집니다.

    • 그래서 그냥 해당 메모리에 있는 값으로 덮어 씌웁니다.

    • 근데 해당 주소에 어떠한 값이 있는지 모르기 때문에 Java는 개발자에게 수동으로 초기화 하라고 요구합니다.

    • C 언어에서는 이를 garbage value 라 부릅니다.(C언어와 Java의 차이를 비교하면 이해가 쉽습니다.)

  • 멤버변수(인스턴스 변수, 클래스 변수)는 자동으로 초기화 됩니다.

멤버 변수의 초기화

  • 클래스 변수 : 클래스가 처음 로딩될 때 단 한번만 초기화 됩니다.

  • 인스턴스 변수 : 인스턴스가 생성될 때 마다 초기화 됩니다.

초기화 방법

명시적 초기화(=)

class Tv11_1 {
    boolean power = false;    // 기본형 변수의 초기화
    int channel = 1;          // 기본형 변수의 초기화
    Audio audi = new Audio(); // 참조형 변수의 초기화, 참조형은 객체주소 or null 로 초기화!!
    // 참조형의 기본값은 null 입니다!!
    ...
}

초기화 블럭

class Tv11_2 {
    static boolean power;
    int channel; 
    
    // 클래스 초기화 블럭
    static 
    {
        power = false;
    }
    
    // 인스턴스 초기화 블럭
    {
        channel = 1;  
    }
    ...
}

생성자 초기화

class Tv11_3 {
    // 속성 : 변수 선언
    boolean power; // 전원상태
    int channel;  // 채널
    String color; // 색깔
    long price; // 가격
    
    // 위 속성에서 필수로 초기값이 필요한 값들을 초기화 해주는 기본 생성자
    Tv11_3() {
        this.power = false;
        this.channel = 1;
    }
    ... 
}

Ref. Java의 정석 기초편 Chapter6(38, 39, 40, 41)

Previousthis 와 this()

Last updated 2 years ago

Ref.

변수의 초기화