Programming Language/JAVA (2) - 혼공자
[Java 혼자 공부하는 자바] 필드
나수비니
2023. 9. 24. 10:30
728x90
필드
- 핵심 키워드
- 필드 선언, 필드 사용
- 핵심 포인트
- 필드는 객체의 고유 데이터, 부품 객체, 상태 정보를 저장
- 필드를 선언하고 생성한 뒤 이를 읽고 변경하는 법
필드 (Field)
- 필드란 무엇인가?
- 클래스에 포함된 변수(Variable)를 의미한다.
- 클래스 내에서 필드는 선언된 위치에 따라 아래와 같이 구분된다.
- 클래스 변수 (static variable)
- 인스턴스 변수 (instance variable)
- 지역 변수 (local variable)
- 예시
class Car {
static int modelOutput; //클래스 변수
String modelName; //인스턴스 변수
void method**() {
int something = 10; //지역 변수
}
}
package sec02.exam01;
public class Car {
//Field
String company = "현대자동차";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed;
}
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);
}
}
필드 선언
필드 선언
- 클래스 중괄호 { } 블록 어디서든 존재 가능
- 생성자, 메소드 중괄호 { } 블록 내부에는 선언될 수 없다.
- 생성자와 메소드 중괄호 블록 내부에 선언된 것은 모두 로컬 변수가 된다.
- 필드 선언법
[접근 제어자(public, private 등)] [static, final 등] 자료형 변수명 [= 초기값];
필드 타입별 기본 초기값
- 초기값이 지정되지 않은 필드는 객체 생성 시 자동으로 기본 초기값으로 설정된다.


즉,
- 기본타입
- 정수타입 필드는 0
- 실수 타입 필드는 0.0
- boolean 필드는 false
- 참조타입
- 객체를 참조하고 있지 않은 상태인, null로 초기화된다.
- 코드로 직접 확인해보기
//필드 타입별 기본 초기값
package sec03.exam02;
public class FieldInitValue {
byte byteField;
char charField;
short shortField;
int intField;
long longField;
boolean booleanField;
float floatField;
double doubleField;
int[] arrField;
String strField;
}
package sec03.exam02;
public class FieldInitValueExample {
public static void main(String[] args) {
FieldInitValue fiv = new FieldInitValue();
//fiv는 변수이다.fiv변수는 new FieldInitValue의 번지수를 참조하게 된다.
System.out.println(fiv.byteField);
//1. 현재 출력하면 0이 출력된다. 필드에 값을 설정하지 않았기 때문에.
System.out.println(fiv.charField);
System.out.println(fiv.shortField);
System.out.println(fiv.intField);
System.out.println(fiv.longField);
System.out.println(fiv.booleanField);
System.out.println(fiv.floatField);
System.out.println(fiv.doubleField);
System.out.println(fiv.arrField);
System.out.println(fiv.strField);
}
}