DEV/JAVA

변수 | final

devvnn 2021. 12. 23. 20:07
  • 변수를 정의할 때 final을 써주면, 그 변수는 '상수'가 되며, 상수는 한 번 정의하고 나서 다시 바꿀 수 없음
기본형

 

final double pi = 3.141592;
pi = 2.54;
cs

 

  • 위의 코드는 오류가 남
  • final로 정의된 변수의 값은 바꿀 수 없음

 

 

참조형

 

public class Person {
    private String name;
 
    public Person(String name) {
        this.name = name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getName() {
        return this.name;
    }
 
    public static void main(String[] args) {
        final Person p1 = new Person("김여름");
        p1.setName("김가을");
        System.out.println(p1.getName());
    }
}
cs

 

김가을
cs

 

  • 위의 코드는 문제없이 실행됨
  • final은 p1에 해당하는 것이지, p1의 인스턴스 변수에 해당하는 것이 아니기때문
  • 즉 p1의 이름을 못 바꾸도록 만드려면 Person 클래스 내에서 name을 final로 정의하면 됨
  • 배열의 length 변수도 final 변수! 처음에 배열의 크기가 주어질 때 값이 정해지고 그 후에는 바꿀 수 없음