기록장

파이널 필드랑 상수를 설명해 줄게 본문

개발/JAVA

파이널 필드랑 상수를 설명해 줄게

HJJJJJ 2022. 5. 15. 15:16
728x90

파이널은 최종적인 필드라는 뜻이겠지?

final 필드는 초기값이 저장되면 이것이 최종적인 값이 돼

그래서 수정할 수가 없어

 

선언방법은

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

이렇게 하면 돼 

 

파이널 필드에 초기값을 줄 수있는 방법은 두개야

1. 필드 선언 시에 주는 방법이랑  -->단순 값일 때

2. 생성자에서 주는 방법 -->  복잡한 초기화, 외부 데이터로 초기화 

package sec02.exam01;

public class Person {
	final String nation = "Korea";
	final String ssn;
	String name; 
	public Person(String ssn, String name) {
		this.ssn =ssn;
		this.name =name;
	}
}
package sec02.exam01;

public class PersonExample {

	public static void main(String[] args) {
		Person p1 = new Person("123456-123456", "홍길동");
		
		System.out.println(p1.nation);
		System.out.println(p1.ssn);
		System.out.println(p1.name);
		
		//p1.nation = "usa";
		//p1.ssn = "654321-7654321";
		p1.name="홍삼원";

	}

}

상수를 설명해 줄게

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

(수학에서는 원주율(파이),지구의 무게 및 둘레)

 

근데 위에서 말한 파이널이랑은 달랑

 

왜냐면 파이널 필드는 객체마다 저장이 되고 생성자의 값 마다 

여러가지 값을 가질 수 있거든? ( 위에 홍길동처럼)

 

하지만 상수는 불변의 값이라고 했지? 

객체마다 저장할 필요가 없는 공용성도 있고 여러 가지 값으로 초기화가 안돼

즉 상수는 static이면서 final이지 

static final 필드는 객체마다 존재하지 않고 클래스만 존재해 

한 번 초기값이 저장되면 변경 안돼~

 

static final 타입 상수 = 초기값; 

 

이렇게 선언해

 

상수 이름

-모두 대문자  

-다른 단어가 혼합된 이름이면 언더바(_)로 단어들을 연결해줘 

 

static final double PI = 3.14159;
static final double EARTH_RADIUS =6400;
static final double EARTH_EARTH = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;

이런게 올바르게 선언한 형식이야

package sec02.exam01;

public class Earth {
	static final double EARTH_RADIUS = 6400;
	static final double EART_ARE = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
}

상수 선언 

 

package sec02.exam01;

public class EarthExample {

	public static void main(String[] args) {
		System.out.println("지구의 반지름" + Earth.EARTH_RADIUS+"km");
		System.out.println("지구의 표면력" + Earth.EART_ARE+"km");

	}

}

상수 사용 

728x90
Comments