[final 필드]
final의 의미는 최종적이란 뜻을 가지고 있습니다.
final필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없다는 것입니다. final 필드는 다음과 같이 선언됩니다.
final 타입 필드 [ = 초기값];
ex)
[Person.java]
public class Person {
final String nation = "Korea";
final String num;
String name;
public Person(String num, String name) {
this.num = num;
this.name = name;
}
}
[PersonExample.java]
public class PersonExample {
public static void main(String[] args) {
Person p1 = new Person("123-123", "최진우");
System.out.println(p1.nation);
System.out.println(p1.num);
System.out.println(p1.name);
//p1.nation = "USA"'; -> final 필드는 값 수정 불가
//p1.num = "456-456"; -> final 필드는 값 수정 불가
p1.name = "지누";
}
}
[상수 (static final) ]
일반적으로 불변의 값을 상수라고 부릅니다.
이런 불변의 값을 저장하는 필드를 자바에서 상수(constant) 라고 합니다.
final과 차이를 살펴보겠습니다.
final필드는 한 번 초기화 되면 수정할 수 없는 필드라고 하였습니다. 그러나 final필드를 상수라 하지는 않습니다.
왜냐하면 불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있으며, 여러가지 값으로 초기화 될 수 없기 때문입니다.
final 필드는 객체마다 저장되고, 생성자의 매개값을 통해서 여러가지 값을 가질 수 있기 때문에 상수가 될 수 없습니다. 상수는 static 이면서, final 이어야 합니다. static final 필드는 객체마다 저장되지 않고, 클래스에만 포함됩니다.
그리고 한 번 초기값이 저장되면 변경할 수 없습니다.
static final 타입 상수 [ = 초기값];
예시)
static final 타입 상수;
static {
상수 = 초기값;
}
ex)
static final double PI = 3.14159;
static double EARTH_SURFACE_AREA;
-> (상수 이름은 모두 대문자로 작성하는 것이 관례입니다.)
'Programming > JAVA' 카테고리의 다른 글
JavaAPI(1) - Socket을 이용한 서버/클라이언트 (0) | 2016.07.09 |
---|---|
Java - (12) 접근 제한자 (public, protected, default, private) (0) | 2016.05.15 |
Java - (10) 싱글톤(Singleton) (0) | 2016.05.15 |
Java - (9) 정적 멤버와 static (0) | 2016.05.15 |
Java - (8) 메소드 (Method) (0) | 2016.05.15 |
WRITTEN BY