public class FinalLocalMain {
public static void main(String[] args) {
//final 지역 변수1
final int data1;
data1 = 10; //최초 한번만 할당 가능
//data1 = 20; //컴파일 오류
//final 지역 변수2
final int data2 = 10;
//data2 = 20; //컴파일 오류
method(10);
}
//final 매개변수
static void method(final int parameter) {
//parameter = 20; 컴파일 오류
}
}
package final1;
// final 필드 - 생성자 초기화
public class ConstructInit {
final int value;
public ConstructInit(int value) {
this.value = value;
}
}
package final1;
// final 필드 - 필드 초기화
public class FieldInit {
static final int CONST_VALUE = 10;
final int value = 10;
}
package final1;
public class FinalFieldMain {
public static void main(String[] args) {
// final 필드 - 생성자 초기화
System.out.println("생성자 초기화");
ConstructInit constructInit1 = new ConstructInit(10); //10
ConstructInit constructInit2 = new ConstructInit(20); //20
System.out.println(constructInit1.value); //10
System.out.println(constructInit2.value); //20
// final 필드 - 필드 초기화
System.out.println("필드 초기화");
FieldInit fieldInit1 = new FieldInit();
FieldInit fieldInit2 = new FieldInit();
FieldInit fieldInit3 = new FieldInit();
System.out.println(fieldInit1.value); //10
System.out.println(fieldInit2.value); //10
System.out.println(fieldInit3.value); //10
// 상수
System.out.println("상수");
System.out.println(FieldInit.CONST_VALUE); //10
}
}
코드설명
생성자 초기화 - ConstructInit
필드 초기화 - FieldInit
static final - FieldInit.MY_VALUE