본문 바로가기

java 공부/객체지향 with 김영한

[실전자바-기본편]7. 변수와 초기화

변수의 종류

  • 멤버 변수(필드) : 클래스에 선언 
  • 지역 변수 : 메서드에 선언, 매개변수도 지역 변수의 종류

 

변수의 초기화

  • 멤버 변수 : 자동초기화
  • 지역 변수 : 수동 초기화

지역변수는 항상 직접 초기화를 해야한다. 

 

public class InitData {
    int value1; //초기화 하지 않음
    int value2 = 10;//10으로 초기화
}

한 변수는 초기화를 하지 않았고, 한 변수는 10으로 초기화를 하여 출력해보았다.

public class InitMain {
    public static void main(String[] args) {
        InitData data = new InitData();
        System.out.println("value1 = " + data.value1);
        System.out.println("value2 = " + data.value2);
    }
}

 

출력 결과

초기화를 하지 않은 변수는 0,

초기화를 한 변수는 지정한 값이 출력되는 것을 확인할 수 있다.

 

null

아직 가리키는 대상이 없거나 주소가 없다면 참조형 변수에 null값을 담아놓을 수 있다.

자바에서는 참조형 변수에만 null을 사용할 수 있다.

 

 public static void main(String[] args) {
        Data data = null;
        System.out.println("1. data = " + data);
        data = new Data();
        System.out.println("2. data = " + data);
        data = null;
        System.out.println("3. data = " + data);
    }

 

출력 결과

 

처음에 참조형 변수에 null값을 할당하여 아직 가리키는 객체가 없었다.

이후 새로운 Data 객체를 생성해서 그 참조값을 변수에 할당했다. 출력 시 참조값이 나왔다.

마지막으로 null값을 다시 할당하여 data는 아무것도 참조하지 않게 되었다.

 

자바는 아무도 참조하지 않는 인스턴스가 있으면 GC(가비지컬렉션)가 더 이상 사용하지 않는 인스턴스라고 판단하고 해당 인스턴스를 자동으로 메모리에서 제거해준다.