본문 바로가기

BackEnd/Java

[java] 이것이 자바다 ch06 fianl 필드와 상수

728x90
반응형

1. final 필드 선언

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

   ▷ final 필드에 초기값을 주려면 필드 선언 시에 초기값을 대입하거나 생성자에서 초기값을 대입합니다.

 

public class Korean {
	// 인스턴스 final 필드 선언
	final String nation = "대한민국";
	final String ssn;
	
	// 인스턴스 필드 선언
	String name;
	
	// 생성자 선언
	public Korean(String ssn, String name) {
		this.ssn = ssn;
		this.name = name;
	}
}

 

public class KoreanExample {
	public static void main(String[] args) {
		// 객체 생성 시 주민등록번호와 이름 전달
		Korean k1 = new Korean("123456-1234567", "감자바");
		
		//필드값 읽기
		System.out.println(k1.nation);
		System.out.println(k1.ssn);
		System.out.println(k1.name);
		
		// final 필드에는 값을 변경할 수 없다.
		// k1.nation = "USA";
		// k1.ssn = "123-123-12134";
		
		// 인스턴스 멤버의 값 변경은 가능
		k1.name = "김자바";
		System.out.println(k1.name);
	}
}

//	출력 :
//	대한민국
//	123456-1234567
//	감자바
//	김자바

 

 

2. 상수 선언

   ▷ 상수 : 불변의 값을 저장하는 필드, 대문자를 사용해야합니다.

   ▷ 상수는 객체마다 저장할 필요가 없고, 여러 개의 값을 가져도 안되기 때문에 static이면서 final이어야 합니다.

   ▷ 상수는 대문자로 사용합니다. 두 단어 이상일 경우 언더바( _ )를 이용해서 연결합니다.

 

public class Earth {
	// 상수 선언 및 초기화
	static final double EARTH_RADIUS = 6400;
	
	// 상수 선언
	static final double EARTH_SURFACE_AREA;
	
	// 정적 블록에서 상수 초기화
	static {
		EARTH_SURFACE_AREA = 4 * Math.PI + EARTH_RADIUS + EARTH_RADIUS;
	}
}

 

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

//	출력:
//	지구의 반지름 : 6400.0km
//	지구의 표면적 : 12812.56637061436km^02

 

final과 상수의 선언과 사용방법을 알아보았습니다. 해당 변수들은 지정 후 값은 변경이 되지 않습니다.

 

두 가지를 구분해서 사용하는 이유에 대해서도 아직 확실하게 모르겠네요,,ㅎㅎ

 

한 번 알아보고 정리해볼게요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형