☕️ Java/기본

[Java] final 키워드 (상수와 리터럴)

말 랑 2022. 1. 28. 20:44
728x90

 

상수 (Constant)

상수는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이다. 그러나 변수와는 다르게 한 번 값을 저장하면, 다른 값으로 변경할 수 없다.

상수를 정의할 때는 final 키워드를 이용하여 정의한다.

final int MAX_SPEED = 100;

 

상수는 선언과 동시에 초기화 할 필요는 없다.

초기화 하는 방법을 알아보자.

 

 

 

 

인스턴스변수로 사용된 상수 초기화

public class Constant {

    final int MAX_SPEED=100;

    final int MIN_SPEED;

    final int AVERAGE_SPEED;

    //초기화 블럭에서 초기화
    {
        MIN_SPEED = 10;
    }

    //생성자에서 초기화
    public Constant(int AVERAGE_SPEED) {
        this.AVERAGE_SPEED = AVERAGE_SPEED;
    }
}

위와 같이 선언과 동시에 초기화 하거나, 생성자를 통해서 초기화 할 수 있다. 또한 초기화 블럭(initialization block)에서도 초기화 시켜줄 수 있다.

 

 

 

 

클래스변수로 사용된 상수 초기화

public class Constant {
    
    static final int MAX_SPEED=100;
    
    static final int MIN_SPEED;
    static {
        MIN_SPEED = 10;
    }
}

위와 같이 선언과 동시에 초기화 하거나, 클래스 초기화 블럭에서도 초기화 시킬 수 있다.

 

 

 

 

 

지역변수로 사용된 상수 초기화

public void localVariable(String str){
    final String DEFAULT_STRING = "STR";
    
    final String SPECIAL_STRING;

    if (str.equals("VIP")){
        SPECIAL_STRING = "VIP";
    }else {
        SPECIAL_STRING = "BASIC";
    }

}

위와 같이 조건문을 통해서도 초기화할 수 있다.

 

 

 


 

 

fianl 매개변수

final로 선언된 매개변수는 메서드 내에서 변경이 불가능합니다.

public void test(final String name){
    String myName = name;
    
    //name = name + "1";  -> 불가능
    myName = myName +"1"; //가능

}

 

 

 


 

 

final 메서드

상속은 가능하지만 오버라이딩은 불가능합니다. 즉 부모에서 정의한 그 상태 그대로 사용해야 합니다.

 

 

 

 


 

 

final 클래스

상속이 불가능합니다.

 

 

 


 

리터럴(literal)

원래는 12, 123, 3.14, 'A'와 같은 값을들 저희는 상수라고 했습니다.

그러나 프로그래밍에서는 상수를 '값을 한 번 저장하면 변경할 수 없는 저장공간'으로 정의하였기에 기존에 우리가 알고 있던 상수를 다른 이름으로 불러야 했습니다.

그렇게 해서 사용한 용어가 바로 리터럴입니다.

리터럴은 어렵게 생각할 필요 없이 기존에 우리가 알고 있었던 '그 자체로 값을 의미하는 것'이라고 생각하시면 됩니다.

 

 

 

 

 

 

📔 Reference

 

 

자바에서 static 블록은 무엇을 의미하나요?

static { ... } 이런 코드를 봤는데요. 이게 뭔지 전혀모르겠고 에러도 안나고 컴파일도 잘되네요. 'static' 블록이 의미하는게 뭔가요?

hashcode.co.kr

 

 

final 키워드

상수라고도 불린다.변수를 선언과 동시에 초기화하여 이후에 값을 초기화할 수 없다.오직 get만 가능하다.다음과 같이 변수를 선언할 때, 클래스 앞에 final 키워드를 입력할 수 있다.final 키워드

velog.io

 

 

[JAVA] 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수)

이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 선언 위치에 따른 변수의 종류 자바에서의 변수는 클래스 변수, 인스턴스 변수, 지역 변수가 있습니다. 변수의 종류를 결정짓는 것은 '변수가 선언

itmining.tistory.com

 

728x90