Final을 변수 앞에 붙이면 단 한 번만 값 할당이 가능하고 이후부터는 수정이 불가능해진다.
그런데 만약에 초기화를 진행할 때 Final로 계속 생성한다면?
public class Car {
private final int pk = 0;
private String name;
public Car(String name) {
this.name = name;
}
public int getPk() {
return pk;
}
public String getName() {
return name;
}
}
Car 클래스를 만들고 final pk를 가지는 인스턴스를 3개 만들어보고 출력해보자.
public class Main {
public static void main(String[] args) {
Car k3 = new Car("K3");
System.out.println(k3.getPk());
Car g80 = new Car("G80");
System.out.println(g80.getPk());
Car modelY = new Car("Model Y");
System.out.println(modelY.getPk());
}
}
pk는 final이라 0으로 전부 초기화돼서 생성된 걸 볼 수 있다.
즉 pk가 0이라는 동일한 값을 가진 상태로 인스턴스가 여러 개 생성되는 건데, 이거는 메모리 측면에서 굉장히 안 좋은 방법이다. final이라 값을 변경하지 못하는 상태인데 굳이 동일한 값을 인스턴스마다 계속 생성을 해야 하는가?
우리는 낭비를 해결하기 위한 방법으로 static을 사용할 수 있다.
즉 final + static을 사용해서 변하지 않는 변수를 하나만 생성해서 관리하는 것이다.
그래서 final과 static을 같이 써서 메모리 효율을 향상시키는 것이 사용 이유다.
반응형
'JAVA 강의(인프런)' 카테고리의 다른 글
다형성(1) (2) | 2023.12.03 |
---|---|
상속 (0) | 2023.12.03 |
Java 메모리 구조 (0) | 2023.12.03 |
생성자 (0) | 2023.12.03 |