클래스 내부 구성요소 - 1. 필드

Ⅰ. 필드 

1. 필드 (Field)

 - 클래스 내부에 정의된 변수

 - 객체의 속성값을 지정할 수 있는 클래스에 포함된 변수

 - [비교] 지역변수 (Local variable)는 메소드에 포함된 변수

    ※ 관례적으로, 클래스 이름을 지을 때는 앞글자를 대문자로 정함

 - 필드 → Heap 메모리에 저장

 - 지역변수 → Stack 메모리에 저장

 

// Example
class Car {
  String color;
  String name;        				// 이건 필드
}

public class Main {
	public static void main(String[] args) {
		Car a = new Car();
		Car b = new Car();
		Car c = new Car();
		// int a;            			여기에 이건 지역변수
		a.name = "소나타";
		b.name = "레이";
		c.name = "아반떼";
		System.out.println(a.name);		// 소나타
		System.out.println(b.name);		// 레이
		System.out.println(c.name);		// 아반떼
	}
}

 

2. 필드(Field) vs. 지역변수(Local Variable)

 - Heap 메모리에 들어가는 필드값은 값을 미입력시 강제 초기화

 - Stack 메모리에 들어가는 지역변수는 강제 초기화 되지 않음

    → 초기값이 없는 상태로 출력을 시도하면 오류 발생

    ※ Heap 메모리의 초기값은 빈칸으로 존재할 수 없으며 디폴트 초기값이 강제 설정

// Example1
Class A {
	int m;				
	int n;					// 초기화 하지 않음
    
	void work1() {
		int k;				// 초기화 하지 않음
		//System.out.println(k);	// 초기값이 없는 상태로 출력을 시도하여 오류 발생
	}
}

// Example2
class A {
	boolean m1;
	int m2;
	double m3;
	String m4;				// 초기화 하지 않음
    
	void printFieldValues() {
		System.out.println(m1);		// false
		System.out.println(m2);		// 0
		System.out.println(m3);		// 0.0
		System.out.println(m4);		// null
	}
}