코딩 이야기
JAVA 필드 본문
필드는 객체의 고유 데이터 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳입니다.
필드선언
필드 선언은 클래스 중괄호 {]블록 어디서든 존재할 수 있습니다. 생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선언이 가능합니다. 하지만 생성자와 메소드 중괄호{}블록 내부에는 선언할 수 없습니다. 생성자와 메소드 중괄호 블록내부에 선언 된 것은 모두 로컬 변수가 됩니다. 필드의 선언은 변수의 선언 형태와 비슷합니다.
타입 필드 [ = 초기값 ] ;
타입은 필드에 저장할 데이터의 종류를 결정하며 기본타입과 참조타입 모두가 올 수 있습니다. 필드의 초기값은 필드 선언시 주어질 수도 있고 생략될 수도 있습니다.
예)
String company = "현대자동차"
String model = "그랜저;
int maxSpeed =300;
int productionYear;
int currentSpeed;
boolean engineStart;
초기값이 지정되지 않은 필드는 객체 생성시 자동으로 기본 초기값이 설정됩니다. 필드의 타입에 따라 기본 초기값 다릅니다.
필드 사용
필드를 사용한다는 것은 필드값을 읽고 변경하는 작업을 말합니다. 클래스 내부의 생성자나 메소드에서 사용할 경우 단순히 필드 이름으로 읽고 변경하면되지만 클래스 외부에서 사용할 경우 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야 합니다. 그 이유는 필드가 객체에 소속된 데이터이므로 객체가 존재하지 않으면 필드도 존재하지 않기 때문이다.
Car 클래스 필드 선언
package ch06;
public class Car {
String company = "현대자동차";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed;
}
외부 클래스에서 Car 필드값 읽기와 변경
package ch06;
public class CarExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 객체 생성
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);
}
}
여기서 speed는 기본값인 0이 저장되어 있다.
필드 자동 초기화
package ch06;
public class FieldIntValue {
byte byteField;
short shortField;
int intField;;
long longField;
boolean booleanField;
char charField;
float floatField;
double doubleField;
int[] arrField;
String referenceField;
}
필드값 출력
package ch06;
public class FieldIntValueExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
FieldIntValue fiv = new FieldIntValue();
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);
}
}