필드(Field)
필드는 객체 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳.
필드 선언
클래스 중괄호{ }블록 어디서든 존재할 수 있으며, 생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선언이 가능하지만
생성자와 메소드 중괄호 블록 내부에 선언된 것은 모두 로컬 변수가 되기때문에 생성자와 메소드 중괄호{ }블록 내부에는 선언 될 수 없음.
타입은 필드에 저장할 데이터의 종류를 결정하며, 타입에는 기본타입과 참조타입 모두 올 수 있고 필드의 초기값은 필드 선언 시 주어질 수도 있고 생략될 수도 있음.
// 타입 필드 [ =초기값 ];
String company = "현대";
String model = "그랜저";
int maxSpeed = 300;
int currentSpeed;
boolean engineStart;
초기값이 지정되지 않은 필드는 객체 생성 시 자동으로 기본 초기값으로 설정 됨.
| 분류 | 타입 | 초기값 | |
| 기본 타입 | 정수 타입 | byte char short int long |
0 \u0000(빈 공백) 0 0 0L |
| 실수 타입 | float double |
0.0F 0.0 |
|
| 논리 타입 | boolean | false | |
| 참조 타입 | 배열 클래스(String 포함) 인터페이스 |
null null null |
|
필드 사용
필드를 사용한다는 것은 필드값을 읽고 변경하는 작업을 말하며, 클래스 내부의 생성자나 메소드에서 사용할 경우 단순히 필드 이름으로 읽고 변경하면 되지만, 필드는 객체에 소속된 데이터이므로 객체가 존재하지 않으면 필드도 존재하지 않기 때문에 클래스 외부에서 사용할 경우 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야함.
// Car클래스 필드 선언
package sec02.exam01;
public class Car {
//필드
String company = "현대";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed;
}
// 외부 클래스에서 Car필드값 읽기와 변경
package sec02.exam01;
public class CarExample {
public static void main(String[] args) {
// 객체 생성
Car myCar = new Car();
// 필드값 읽기
System.out.println("제작회사: " + myCar.company);
System.out.println("모델명: " + myCar.model);
System.out.println("색깔: " + myCar.color);
System.out.println("최고속도: " + myCar.maxSpeed);
System.out.println("현재속도: " + myCar.speed);
// 필드값 변경
myCar.speed = 60;
System.out.println("수정된 속도: " + myCar.speed);
}
}
// 실행 결과
// 제작회사: 현대
// 모델명: 그랜저
// 색깔: 검정
// 최고속도: 350
// 현재속도: 0
// 수정된 속도: 60
// 필드 자동 초기화
package sec02.exam02;
public class FieldInitValue {
// 필드
byte byteField;
short shortField;
int intField;
long longField;
boolean booleanField;
char charField;
float floatField;
double doubleField;
int[] arrField;
String referenceField;
}
// 필드값 출력
package sec02.exam02;
public class FieldInitValueExample {
public static void main(String[] args) {
FieldInitValue fiv = new FieldInitValue();
System.out.println("byteField: " + fiv.byteField);
System.out.println("shortField: " + fiv.shortField);
System.out.println("intField: " + fiv.intField);
System.out.println("longField: " + fiv.longField);
System.out.println("booleanField: " + fiv.booleanField);
System.out.println("charField: " + fiv.charField);
System.out.println("floatField: " + fiv.floatField);
System.out.println("doubleField: " + fiv.doubleField);
System.out.println("arrField: " + fiv.arrField);
System.out.println("referenceField: " + fiv.referenceField);
}
}
// 실행 결과
// byteField: 0
// shortField: 0
// intField: 0
// longField: 0
// booleanField: false
// charField:
// floatField: 0.0
// doubleField: 0.0
// arrField: null
// referenceField: null
🔘 필드 선언: 클래스 중괄호 { }블록 어디서든 선언하나, 생성자와 메소드 내부에서는 선언할 수 없음.
🔘 필드 사용: 클래스 내부의 생성자와 메소드에서 바로 사용이 가능하나, 클래스 외부에서 사용할 경우에는 반드시 객체를 생성하고
참조 변수를 통해서 사용해야함.
'Java' 카테고리의 다른 글
| [Java] 메소드 (0) | 2025.11.09 |
|---|---|
| [Java] 생성자 (0) | 2025.11.09 |
| [Java] 클래스 (0) | 2025.11.06 |
| [Java] 열거 타입 (0) | 2025.11.05 |
| [Java] 배열 (0) | 2025.11.04 |