본문으로 바로가기

[Java] 변수와 상수와 리터럴

category Language/Java 2022. 12. 7. 00:09
728x90
반응형

변수

변수(variable), 값을 저장할 수 있는 메모리 상의 공간을 의미함, 이 공간에 저장된 값은 변경될 수 있기 때문에 변수라고 부름

 

변수의 선언과 초기화

변수의 선언은 다음과 같이 해주면 된다.

boolean flag = true;
char var1 = 'a';
byte var2 = 1;
short var3 = 10;
int var4 = 100;
long var5 = 100;
float var6 = 3.14f;
double var7 = 3.14;

변수는 ‘변수 타입’과 ‘변수명’으로 구분된다. 위 예시에서는 boolean, char, byte, short, int, long, float, double이 변수의 타입이 되고 각각 flag, var1, var2, var3, var4, var5, var6, var7이 변수명이 된다. 변수 타입과 변수명에 대한 정의는 다음과 같다.

  • 변수 타입
    • 변수에 저장될 값이 어떤 타입(type)인지를 지정해주는 것이다.
  • 변수명
    • 변수에 붙이는 이름이다.

 

변수명 규칙

변수명을 만들 때는 다음의 규칙을 지켜야 한다.

  • 대소문자를 구분해야 한다.
  • Java 예약어를 사용하면 안 된다.
  • 숫자로 시작해서는 안된다
  • 특수문자는 ‘_’와 ‘$’만 허용한다.

변수 이름은 짧을수록 좋으며, 길더라도 알기 쉽게 ‘의미 있는 이름’으로 하는 것이 좋다.

 

 

기본형 변수(Primitive Type)

기본형 변수(primitive type)란 실제 값을 저장하는 변수를 뜻한다. 참조형 변수(reference type)란 것도 있는데 어떤 값이 저장되어 있는 주소를 값으로 갖는 변수를 뜻하는데 이번 단락에서는 기본형 변수만 알아보자.



기본형 변수 종류

  • 논리형: true와 false 중 하나를 값으로 갖으며 조건식과 논리적 계산에 사용된다.
    • boolean
  • 문자형: 문자를 저장하는 데 사용되며, 변수에 하나의 문자만 저장 가능
    • char
  • 정수형: 정수를 저장하는 데 사용되며, 주로 int가 사용된다. byte는 이진 데이터를 다루며, short는 C 언어와 호환을 위해 추가되었다.
    • byte, short, int (정수에서 기본형), long
  • 실수형 : 실수를 저장하는 데 사용된다.
    • float, double (실수에서 기본형)



기본형 변수의 저장 가능한 값의 범위와 크기

  • boolean 제외한 나머지 7개의 기본형은 서로 연산과 변환이 가능하다.
  • int는 CPU가 가장 효율적으로 처리할 수 있는 타입이다. 효율적인 실행보다 메모리를 절약하려면 byte나 short를 선택하자.
  • 실수형은 정수형과 저장형 식이 달라서 같은 크기라도 훨씬 큰 값을 표현할 수 있으나 오차가 발생할 수 있다는 단점이 있다. 그래서 정밀도가 중요한데 정밀도가 높을수록 발생할 수 있는 오차의 범위가 줄어든다.
    • float의 정밀도는 7자리인데, 10진수로 7자리의 수를 오차 없이 저장할 수 있다는 뜻이다.
    • double의 정밀도는 15자리인데, 10진수로 15자리의 수를 오차 없이 저장할 수 있다는 뜻이다.



상수

상수(constant)는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만 변수와 달리 한 번 선언하면 다른 값으로 변경할 수 없다.

 

상수 선언

상수를 선언하는 방법은 변수를 선언하고 난 뒤 final를 붙여주는 것이다.

final int age = 10;

상수는 반드시 선언과 동시에 초기화해야 한다.

 

상수 명명규칙

상수의 이름은 모두 대문자로 하는 것이 관례이며 여러 단어로 사용할 경우 _ 를 이용한다

final int AGE = 10;
final int MAX_AGE = 100;

 

리터럴

  • 리터럴은 값 그 자체를 의미한다. 변수, 상수, 리터럴은 다음과 같이 요약하자
    • 변수(variable) : 하나의 값을 저장하기 위한 공간이며 선언한 뒤 변경이 가능하다
    • 상수(constant): 값을 한 번만 저장할 수 있는 공간이며 선언한 뒤 변경이 불가능하다.
    • 리터럴(literal): 값 그 자체를 의미한다.

더 쉽게 설명해보자면 하나의 변수를 선언하면 다음과 같은 파트로 쪼개서 볼 수 있다.

int age = 10
// age -> 변수
// 10 -> 리터럴

final int MAX_AGE = 100;
// MAX_AGE -> 상수
// 10 -> 리터럴

즉 ‘10’이라는 값 자체를 리터럴이라고 부른다.

 

리터럴 타입

변수에 타입이 있는 것처럼 리터럴에도 타입이 존재한다. 정수형(byte, short, int, long)과 실수형(float, dobule)에는 타입이 두 개 이상이므로 리터럴에 접미사를 붙여 타입을 구분할 수 있다.

  • 정수형의 경우
    • 접미사가 ‘l’ 혹은 ‘L’ : long타입의 리터럴
    • 접미사가 없으면 int 타입의 리터럴
    • byte와 short 타입에는 리터럴은 별도로 존재하지 않는다.
    • byte와 short 타입의 값을 저장할 때는 int 타입의 리터럴을 사용한다.
  • 실수형의 경우
    • 접미사가 ‘f’ 혹은 ‘F’ : float 타입의 리터럴
    • 접미사가 ‘d’ 혹은 ‘D’: double 타입의 리터럴
    • 실수형은 기본 자료형이 double이므로 double의 접미사는 생략 가능



타입의 불일치

리터럴 타입은 저장될 변수의 타입과 일치해야 되지만 타입이 달라도 저장 범위가 넓은 타입에 좁은 범위의 타입은 저장하는 게 허용된다.

int i = 'A';
long l = 123;
double d = 3.13f;

 

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

‘A’와 같이 작은따옴표 하나로 문자 하나를 감싼 것은 ‘문자 리터럴’ 문자 리터럴은 반드시 작은따옴표 안에 하나의 문자가 있어야 한다.

char ch01 = ''; // Error
char ch02 = ' '; // OK, 공백이기 때문

“AB”와 같이 큰 따옴표로 한 문자 이상을 감싼 것은 “문자열 리터럴” 문자열 리터럴은 큰 따옴표 안에 아무런 문자도 넣지 않는 것을 허용한다.(empty string이라고 부름)

String str = ""; // OK

문자열 리터럴에 덧셈 연산자를 사용할 경우 피연산자 중 어느 한쪽이라도 String이면 나머지 한쪽을 먼저 String으로 변환한 다음 두 String을 결합한다.

728x90
반응형