이롭게 현명하게

[JAVA] 자바 final 필드와 상수 본문

JAVA

[JAVA] 자바 final 필드와 상수

dev_y.h 2023. 4. 21. 18:55
728x90
반응형


 

목차

 

final 필드

상수(static final)

 


<정리>

final 클래스 - 클래스 상속 불가

final 메소드 - 오버라이딩 불가

[final 필드(객체별 상수), static final 필드(클래스별 상수)]

  • 상수
  • static final 필드는 클래스 선언 시에 초기 값을 지정
  • 일반 final 필드는 주로 생성자에서 초기 값을 선언

[final 필드]

final 필드 : 최종적인 필드. 즉 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없다.

final 데이터타입 필드명 = 초기값;

<final 필드의 초기값>

1. 필드 선언시선언 시 주는 방법 : 단순 선언 시

2. 생성자에서 주는 방법 : 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화해야 할 때

 

생성자에 초기화되지 않은 final 필드가 있을 경우 : 컴파일 에러 발생

 

// Person.java

public class Person {
	final String nation = "Korea";
	final String ssn;
	String name;
	
	public Person(String ssn,String name) {
		this.ssn = ssn;
		this.name = name;
	}
	
	
	
}
// Main.java

public class Main {

	public static void main(String[] args) {
		Person p1 = new Person("123456-1234567","김박이");
		System.out.println(p1.ssn);
		System.out.println(p1.nation);
		System.out.println(p1.name);
		
		p1.nation = "USA ";//final 필드 수정 불가
		p1.name="박김이";
	}

}

[상수(static final)]

상수 : 불변의 값 (ex. 원주율 파이(π))

final 필드를 상수라고 부르지 않는 이유 : 불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있으며, 여러 가지 값으로 초기화 될 수 없기 때문이다.

final 필드는 객체마다 저장되고, 생성자의 매개값을 통해서 여러가지 값을 가질 수 있기 때문에 상수가 될 수 없다.

상수는 static 이면서 final 이여야 한다.

static final 필드는 객체마다 저장되지 않고, 클래스에만 포함된다. 그리고 초기값이 저장되면 변경할 수 없다.

static final 데이터타입 상수명 = 초기값;

static final 데이터타입 상수;
static {
	상수 = 초기값;
}

 

// Earth.java

public class Earth {
	static final double EARTH_RADIUS = 6400;
	static final double EARTH_SURFACE_AREA;
	static final double PI = 3.14;
	static {
		EARTH_SURFACE_AREA = 4*PI*EARTH_RADIUS*EARTH_RADIUS;
	}
	
	
	
}
// Main.java


public class Main {

	public static void main(String[] args) {
		System.out.println("지구의 반지름 : "+Earth.EARTH_RADIUS+"km");
		System.out.println("지구의 표면적 : "+Earth.EARTH_SURFACE_AREA+"km^2");
	}

}

 

 

 

[JAVA] 자바 패키지

패키지 (package) : 자바에서 클래스를 체계적으로 관리하기 위해 사용 프로젝트를 진행하다 보면 수십 개의 클래스를 작성하게 된다. 클래스를 체계적으로 관리하지 않으면 클래스 간의 관계가

devyihyun.tistory.com

 

[JAVA] 자바 접근 제한자

목차 접근 제한자 클래스의 접근 제한 생성자의 접근 제한 필드와 메소드의 접근 제한 접근 지정자의 종류 : private, protected, public, 디폴트(접근 지정자 생략) 클래스나 일부 멤버를 공개하여 다른

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

 

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 접근 제한자  (0) 2023.04.25
[JAVA] 자바 패키지  (0) 2023.04.24
[JAVA] 자바 정적 멤버와 static  (0) 2023.04.20
[JAVA] 자바 인스턴스 멤버와 this  (0) 2023.04.19
[JAVA] 자바 클래스 메소드  (0) 2023.04.18
Comments