자바

JAVA 자바 final 필드와 상수

알통몬_ 2017. 3. 12. 19:23
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

final 필드

초기값이 저장되면 프로그램 실행 도중에 값으 수정할 수 없습니다.

final 타입  필드 [= 초기값];

final 필드의 초기값을 줄 수 있는 방법은 딱 두 가지입니다. 

첫 번째는 필드 선언 시에 주는 방법

두 번째는 생성자에서 주는 방법

초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생함.

 

예제)

public class Person {

final String nation = "Korea";

final String ssn;

String name;

public Person(String ssn, String name) {

this.ssn = ssn;

this.name = name;

}

}

예제2)

public class PersonExample {

public static void main(String[] args) {

Person p1 = new Person("123456-1234567", "부르곰");

System.out.println(p1.nation);

System.out.println(p1.ssn);

System.out.println(p1.name);

//p1.nation = "Corea";           //final 필드는 수정이 불가합니다.

//p1.ssn = "654321-7654321";

p1.name = "을지문덕";;

}

}


상수( static final )

 일반적으로 불변의 값을 상수라고 부른다. 

불변의 값을 저장하는 필드를 자바에서는 상수라고 한다. 

final 필드를 상수라고 부르지는 않는다. 

상수는 static 이면서 final 이어야 함.

static final 필드는 객체마다 저장되지 않고, 클래스에만 포함. 

한 번 초기값이 저장되면 변경 불가.


 static final 타입 상수 [= 초기값];

초기값이 단순 값이라면 선언 시에 주는 것이 일반적이지만, 

복잡한 초기화일 경우 정적 블록에서도 할 수 있습니다.

 static final 타입  상수;

  static {

    상수 = 초기값;

  }


상수 이름은 모두 대문자로 하는 것이 관례이고, 혼합된 단어이면 언더바(_)로 단어들을 연결.

반응형