Programming

; develop a program

Back-End/Java

[Java] 상수와 리터럴

Clloud_ 2023. 1. 27. 10:49
반응형

이번 포스팅에서는 자바(Java)의 상수와 리터럴에 대하여 공부를 해보고자 한다.

 


상수

상수(constant)란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미한다.

상수가 변수와 다른 점은 한번 값을 저장하면 다른 값으로 변경할 수 없다는 점이다.

선언 방법은 변수와 동일하고, 변수의 타입 앞에 'final'만 붙여주면 된다.

 

상수 선언

final double PI = 3.14;
final int MAX_NUM = 100;
자바에서 상수의 이름은 일반적으로 모두 대문자를 사용하여 선언한다.
또한, 여러 단어로 이루어진 이름의 경우에는 언더 스코어(_)를 사용하여 구분한다.
한번 선언한 상수는 변하지 않기 때문에 선언과 동시에 값을 지정하는 것이 좋다.

 

예제

public class Constant {
	public static void main(String[] args) {
    	final int MAX_NUM = 100;	// 선언과 동시에 초기화
        final int NIN_NUM;
        
        MIN_NUM = 0;	// 사용하기 전에 초기화. 초기화하지 않으면 오류 발생
        
        System.out.println(MAX_NUM);
        System.out.println(NIN_NUM);
        
        // MAX_NUM = 1000;	오류 발생. 상수는 값을 변경할 수 없음
	}
}

 

출력 화면

100
0

 

  • 5행에서는 상수 MAX_NUM 선언과 동시에 초기화했다.
  • 6행의 MAX_MIN은 선언만 하고, 사용하기 전에 값을 대입했다.
  • 상수는 10행, 11행처럼 값을 가져와서 사용할 수 있을 뿐 13행처럼 한번 대입한 값을 변경하려고 하면 오류가 발생한다.

 


상수를 사용하면 편리한 이유

프로그램 내부에서 반복적으로 사용하고, 변하지 않아야 하는 값을 상수로 선언하여 사용하면 좋다.

예를 들어 어떤 학급의 학생 수가 최대 30명이라는 코드를 작성하는 경우

다음 코드는 값을 바로 사용하는 경우이다.

if(count = 30) { ... }	// 값이 30이라면
while(i < 30) { ... }	// 30보다 작은 동안

 

만약 최대 학생 수가 30명에서 35명으로 늘어난다면 프로그램에서 값 30을 쓴 부분을 모두 찾아서 고쳐야 하기 때문에 매우 번거롭다.

다음 코드는 상수로 선언하여 사용하는 경우다.

final int MAX_STUDENT_NUM = 35

// 값이 MAX_STUDENT_NUM이라면
if(count == MAX_STUDENT_NUM) { ... }
// MAX_STUDENT_NUM보다 작은 동안
while(i < MAX_STUDENT_NUM) { ... }

 


리터럴(literal)이란

리터럴(literal)이란 프로그램에서 사용하는 모든 숫자, 문자, 논리값(true, false)을 일컫는 말이다.

변수와 상수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않다.

 

다음 코드의 'A', 10, 3.14와 같은 문자와 숫자를 '리터럴' 혹은 '리터럴 상수'라고 한다.

char ch = 'A';
int num = 10;
final double PI = 3.14;
리터럴은 변수나 상수 값으로 대입할 수 있다.

 


타입에 따른 리터럴

자바에서 리터럴은 타입에 따라 다음과 같이 구분할 수 있다.

  • 정수형 리터럴(Integer literals): 123, -456과 같이 아라비아 숫자와 부호로 직접 표현
  • 실수형 리터럴(floating-point literals): 3.14, -45.6과 같이 소수 부분을 가지는 아라비아 숫자로 표현
  • 논리형 리터럴(boolean literals): true나 false로 표현
  • 문자형 리터럴(character literals): 'a', 'Z'와 같이 작은따옴표('')로 감싸진 문자로 표현
  • 문자열 리터럴(string literals): "자바", "홍길동"과 같이 큰따옴표("")로 감싸진 문자열로 표현
  • null 리터럴(null literals): 단 하나의 값인 null로 표현
null이란 아무런 값도 가지고 있지 않은 빈 값을 의미한다.

 


리터럴 타입 접미사(literal type suffix)

자바에서 3.14와 같은 실수형 리터럴을 그대로 사용하면, 해당 리터럴은 실수형 타입 중에서도 double형으로 인식할 것이다.

하지만 실수형 리터럴 맨 뒤에 Ff를 추가하면, 자바는 해당 실수형 리터럴을 float형으로 인식할 것이다.

이처럼 리터럴 뒤에 추가되어 해당 리터럴의 타입을 명시해 주는 접미사를 리터럴 타입 접미사(literal type suffix)라고 한다.

 

자바에서 사용할 수 있는 리터럴 타입 접미사

타입 접미사 리터럴 타입 예제
L 또는 l long형 123456789L, ...
F 또는 f float형 1.234567F, 8.9f, ...
D 또는 d (생략 가능) double형 1.2345D, 6.789d, ...

 


반응형

'Back-End > Java' 카테고리의 다른 글

[Java] 기본 연산자  (0) 2023.01.28
[Java] 형 변환  (3) 2023.01.27
[Java] 논리 자료형  (0) 2023.01.26
[Java] 실수 자료형  (0) 2023.01.26
[Java] 문자 자료형  (0) 2023.01.26