[JAVA] final (01.21)

늘보·2025년 1월 21일

Java

목록 보기
17/17
post-thumbnail

Final

final 키워드가 붙으면 절대 변경할 수 없다. ➡︎ 생성자를 통해 바꿀 수 없다.

초기화한 경우

💡 클래스 내 필드를 초기화 하면 값을 절대 변화 시킬 수 없다.

public Class Data  () {
		final int value = 10; // 초기화 한 경우
}
  • static을 붙이면 JVM상에 하나만 존재하게 된다.
  • 따라서 final + 초기화를 하는 경우에는 static을 붙여 메모리 비효율을 줄일 수 있고 중복을 없앨 수 있다.

초기화 하지 않은 경우

💡 초기화를 하지 않은 경우에는 생성자를 통해 값을 할당해 줄 수 있다.

DataMain.java

Data data1 = new Data(10) // 객체1
data1.print(); -> 10출력
Data data1 = new Data(20) // 객체2
data2.print(); -> 20출력

Data.java

public Class Data  () {
		final int value; // 초기화 한 경우
        public void print() {
        	System.out.println(this.value);
}

❗생성자를 통해 값을 초기화할 경우 인스턴스마다 final 필드에 다른 값을 할당할 수 있다. 즉, 객체의 인스턴스 필드마다 final값을 할당한다.


매개변수 final

💡 매개변수에 final을 붙이면 매서드 내부에서 매개변수 값을 변경할 수 없다.

public Class Data () {
		public int data (final int value) {
        	vlaue = 20; //불가능!
            return value;
        }
}

❗매개변수가 final이기 때문에 메서드 내에서 변경 불가하다.


상수

대문자를 사용하여 상수명을 정하고 구분은 _를 통해서 한다. ➡︎ 이는 변수와 상수를 구분하기 위해서이다.
ex> static final N_PI


참조형 final

final + 참조형을 하게되면 주소가 고정된다.

final Data data = new Data(); //주소: x001로 고정

참조 값 내는 final로 선언되지 않기 때문에 변경 가능하다.

profile
누워만 있지 말고 제발 뭐라도 하자.

0개의 댓글