JAVA

[JAVA] final / static 키워드 알아보기 (7)

jongh0 2025. 5. 21. 11:43

[final] : 재할당이 불가능하도록 변수를 선언하기 위한 키워드

final 키워드를 사용 시, 해당 변수는 재할당이 불가능하다. 다시말해서 처음 선언에서 할당이 동시에 이루어지는 초기화가 필요하다

 

[static] : 클래스로부터 생성되는 모든 객체의 static 변수, 메서드는 다른 객체에서도 동일한 값, 기능을 하도록 하는 키워드

 

ex) 만약 Person 클래스에 name 필드를 static으로 선언하고 p1 p2 객체를 생성하고 두 객체에서 name 필드에 재 할당을 진행하면 두 필드 모두 마지막으로 할당한 값으로 출력된다. 이해가 안간다면 아래 코드 예시를 확인해보자.

 

public class Person {

	static String name;
}

public void main() {

	Person p1 = new Person();
	Person p2 = new Person();

	p1.name = "홍길동";
	p2.name = "코난";
    
    System.out.println(p1.name + " " + p2.name);

}

 

다음 코드를 확인해보자. 단순하게 해당 코드의 main문을 확인해 보면 p1, p2 각각의 객체에 name 필드에 "홍길동", "코난"을 할당해주었다. 출력문으로 "홍길동", "코난"이 나올 것 같지만, Person 클래스에서 name 필드는 static으로 선언되었기 때문에

가장 마지막으로 할당해준 "코난"이 2번 출력된다.

 

 

[그러면 static은 어느 상황에서 유용하게 사용되는지]

 

내가 원하는 클래스를 만들고 여러개의 객체가 생성된다고 하자.

이때 객체마다 모든 필드값이 다르게 관리할 수도 있지만, 어떤 필드에 경우에 어떤 변화가 생겼을 때

모든 객체에 해당 필드의 값을 동일하게 재할당을 해주어야하는 경우에 사용하면 유지보수가 유용하다.

 

ex) 저번에 붕어빵을 예시로 든적이 있다.

붕어빵 클래스는 반죽재료, 속재료의 필드를 가지고 있다고 할 때, 해당 회사에서 반죽재료는 모든 붕어빵 종류에 동일하게

적용된다고 하자. 

 

만약 static을 사용하지 않고 반죽재료 필드가 선언이 되어있다면 나중에 반죽재료 필드의 값을 바꾸려고 할 때,

모든 객체 하나하나 반죽재료 필드값을 동일한 값으로 재할당 해주어야 할 것이다.

하지만 static으로 선언을 한다면,

붕어빵.반죽재료 = "곡물";

 

다음과 같은 코드 한줄로 모든 객체의 반죽재료 필드 값을 변경해 줄 수 있다.

 

그리고 위 코드를 확인해보면 알 수 있듯, static으로 선언된 변수 및 메서드는 객체생성없이 클래스명.변수/메서드명으로 바로 참조가 가능하다.

 

[static final]

위에서 설명한 static, final 두가지 키워드를 동시에 사용할 수 있다.

해당 구문은 프로그램 시작부터 종료까지 재할당이 불가능한 변수를 만드는 키워드로, "상수"라고 표현한다. 주로 상수는 대문자로 변수명을 설정하여 선언한다.

'JAVA' 카테고리의 다른 글

[JAVA] 상속 / 추상메서드 (8)  (0) 2025.05.22
[JAVA] 생성자 / 오버로딩 (6)  (1) 2025.05.20
[JAVA] 클래스 / 객체 (5)  (0) 2025.05.20
[JAVA] 배열(4)  (0) 2025.05.20
[JAVA] 형변환 메서드(3)  (1) 2025.05.19