필드 선언
필드 선언은 클래스 중괄호{}블록 어디서든 가능합니다. 하지만 생성자와 메서드 중괄호 블록 내부는 안됩니다.
public calss ClassName{
// 필드 - 객체의 데이터가 저장되는 곳
int fieldName;
//생성자 - 객체 생성 시 초기화 역할 담당
ClassName() {}
//메서드 - 객체의 동작에 해당하는 실행 블록
void methodName(){}
}
타입 필드 [= 초기값];
String company = "현대자동차";
String model ="그랜저";
int maxSpeed = 300;
int productionYear;
int currentSpeed;
boolean engineStart;
String company = "현대자동차";
String model ="그랜저";
int maxSpeed = 300;
int productionYear;
int currentSpeed;
boolean engineStart;
초기값을 지정해 주지않으면 정수 타입 필드는0, 실수 타입 필드는 0.0 그리고 boolean 타입은 false로 초기화 됩니다.
참조 타입은 객체를 참조하고 있지 않은 상태인 null로 초기화 됩니다.
필드의 사용
필드를 사용한다는 것은 필드값을 읽고, 변경하는 작업을 말합니다. 클래스 내부의 생성자나 메서드에서 사용할 경우 단순히 필드 이름을 읽고 변경하면 되지만, 클래스 외부에서 사용할 경우 우선적으로 클래스부터 객체를 생성한 뒤 필드를 사용해야 합니다. 그 이유는 필드는 객체에 소속된 데이터이므로 객체가 존재하지 않으면 필드도 존재 할 수 없습니다.
-(그림)
이 그림을 보면 Car 클래스의 speed 필드는 생성자와 메서드에서 변경이 가능합니다. 사용 방법은 변수와 같은데 차이점은 변수는 자신이 선언된 생성자 or 메서드 블록 내부에서만 사용 가능하고 반면 필드는 생성자와 모든 메서드에서 사용이 가능 합니다. 외부 person 클래스에서 Car 클래스의 speed 필드값을 사용할려면 Car 객체를 우선 생성해야 합니다.
Car myCar = new Car();
myCar 변수가 Car 객체를 참조하게 되면 도트( . ) 연산자를 사용하여 speed 필드에 접근할 수 있습니다.
도트 연산자는 객체 접근 연산자로 객체가 가지고 있는 필드나, 메서드를 사용할때 사용됩니다.
public class Car {
//필드
String comapny = "현대자동차";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed;
}
public class CarExample {
public static void main(String[] args) {
// 객체 생성
Car myCar = new Car();
// 필드값 읽기
System.out.println("제작회사 : " + myCar.comapny);
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인것은 Car 클래스를 만들때 speed 필드 선언시 초기값을 넣지 않아서 기본값인 0이 나오는 겁니다.
다음 예제는 여러 타입의 필드가 어떤 값으로 자동 초기화 되는지 알아 보겠습니다.
public class FieldInitValue {
// 필드
byte byteField;
short shortField;
int intField;
long longField;
boolean booleanField;
char charField;
float floatField;
double doubleField;
int[] arrField;
String referenceField;
}
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);
}
}
'JAVA' 카테고리의 다른 글
JAVA 필드 초기화 (0) | 2022.07.20 |
---|---|
JAVA 생성자 (0) | 2022.07.19 |
Java 클래스 (0) | 2022.07.15 |
향상된 for문 (0) | 2022.06.24 |
Array 다차원 배열 (0) | 2022.06.23 |