변수의 타입(2)

이승민·2022년 11월 21일
0

Java의 정석

목록 보기
3/17

2.2 상수와 리터럴(constant & Literal)

  • 상수: 변수와 마찬가지로 값을 저장하는 공간. 하지만 값을 한번 저장하면 다른 값으로 변경할 수 없다.(변수 앞에 final 선언)
    • 선언과 동시에 초기화해야한다.
    • 상수의 이름은 모두 대문자로 하는것이 관례
  • 리터럴(literal): 12, 123, 3.14, 'A'와 값은 값
    • 상수를 값을 한번 저장하면 변경할 수 없는 저장공간이라고 정의 했기 때문에 리터럴이라는 용어 사용

변수: 하나의 값을 저장하기 위한 공간
상수: 값을 한번만 저장할 수 있는 공간
리터럴: 그 자체로 값을 의미하는 것

상수가 필요한 이유

int triangleAtrea = (20 * 10) / 2;
int rectangleArea = 20 * 10;

위의 코드는 삼각형과 사각형의 면적을 구해서 변수에 저장한다. 이 코드를 20과 10이 아닌 다른 값을 이용하려면 여러 곳을 수정해야한다.

final int WIDTH = 20;
final int HEIGHT = 10;

int triangleArea = (WIDTH * HEIGHT) / 2;
int rectangleArea = WIDTH * HEIGHT;

상수를 이용해서 기존의 코드를 변경한 것이다. 의미가 더욱 명확해지고 다른 값을 이용하기 위해서는 상수의 초기화만 다른 값으로 하면된다.

따라서 상수는 리터럴에 의미있는 이름을 붙여서 코드의 이해와 수정을 쉽게 만든다.

타입의 불일치

리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만, 타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.

int i = 'A'; //OK, 문자 'A'의 유니코드인 65가 변수에 저장된다.
long i = 123; //OK, int보다 long 타입이 범위가 더 넓다
double i = 3.14f; //OK, float보다 double의 저장범위가 더 넓다.

리터널의 값이 변수의 타입의 범위를 넘어서거나, 리터럴의 타입이 변수의 타입보다 저장범위가 넓으면 컴파일 에러가 발생한다.

문자 리터럴과 문자열 리터럴

  • 문자 리터럴: ''
    • 문자 리터럴은 반드시 하나의 문자가 필요하다. 따라서 ''은 에러 발생
  • 문자열 리터럴: ""
profile
💻 끊임없이 성장하는 백엔드 개발자 💻

0개의 댓글