본문으로 건너뛰기
Advertisement

2.2 변수의 타입 (Variable Types)

자바는 어떤 형태의 데이터를 저장할 것인지 미리 지정해 두어야 하는 강타입(Strongly Typed) 언어 입니다. 데이터의 종류에 따라 값의 저장과 해석에 사용되는 변수의 타입이 결정됩니다.

1. 값의 종류와 자료형(Data Type)

프로그래밍에서 주로 다루는 값은 크게 '문자''숫자' 로 나눌 수 있으며, 숫자는 다시 '정수''실수' 로 나뉩니다.

graph LR
A[값의 종류] --> B[문자]
A --> C[숫자]
B --> D['A', '1', "ABC"]
C --> E[정수 (123, -4)]
C --> F[실수 (3.14, 0.0)]

기본형(Primitive Type)과 참조형(Reference Type)

자바의 자료형은 크게 기본형(Primitive Type) 8가지와 그 외 나머지 모든 언어인 참조형(Reference Type)으로 분류됩니다.

  • 기본형: 실제 값(Data)을 저장 (예: int, double)
  • 참조형: 어떤 값이 저장되어 있는 객체의 주소(결과적으로 메모리의 주소)를 저장 (예: String)

💡 문자열(String) 클래스 맛보기

8가지 기본형에는 단 한 글자만 저장할 수 있는 char형만 존재합니다. 하지만 실무에서는 긴 문장 즉, 문자열(String) 을 다루는 일이 훨씬 많습니다. 비록 String은 자바에서 제공하는 기본형이 아닌 '클래스(참조형)' 이지만, 워낙 자주 쓰이므로 기본형처럼 값을 즉시 대입할 수 있도록 특별한 대우를 받습니다.

String name = "Java"; // 큰따옴표("")를 사용해 문자열을 저장
String version = "17";

// 덧셈 기호(+)를 사용하면 문자열과 다른 변수를 쉽게 결합할 수 있습니다.
System.out.println(name + " " + version); // Java 17

자바의 특징 중 하나는 객체 지향 언어지만, 기본형을 특별하게 취급함으로써 실행 성능을 극대화한다는 점에 있습니다.

2. 8가지 기본형

기본형은 총 8가지 타입이 있으며, 크게 4가지 논리형, 문자형, 정수형, 실수형으로 구분됩니다.

  1. 논리형(boolean): truefalse 두 가지만을 값으로 가지며 조건식 등에서 사용됩니다.
  2. 문자형(char): 단 하나의 문자를 저장하는 데 사용됩니다.
  3. 정수형(byte, short, int, long): 주로 정수를 저장하며, int가 기본 자료형입니다.
  4. 실수형(float, double): 실수를 나타내며, double이 대표적인 자료형입니다.

자료형에 따른 저장공간의 크기 비교

자료형 크기에 따라 값이 메모리에 할당될 때 저장 공간을 차지하는 정도를 의미합니다.

  • 1 byte: boolean, byte
  • 2 bytes: char, short
  • 4 bytes: int, float
  • 8 bytes: long, double

3. 리터럴(Literal)

프로그래밍에서 리터럴은 그 자체로 고정된 값을 지칭합니다. 즉 리터럴은 그 값 자체를 의미합니다. 우리가 흔히 '상수(Constant)'라고 하지만 프로그래밍의 상수는 이와는 구별되는 것이라 리터럴이라 별도 지칭합니다.

int year = 2024;    // 2024가 리터럴
final int MAX_NUM = 100; // 100이 리터럴, MAX_NUM은 상수

상수 (Constant) 선언하기

값을 한 번 저장하면 프로그램이 종료될 때까지 절대 변경할 수 없는 변수 를 '상수'라고 합니다. 변수의 타입 앞에 final 키워드를 붙여 선언하며, 주로 암묵적 규칙에 따라 대문자로 이름을 짓습니다.

final double PI = 3.14159;
// PI = 3.14; // 에러! 상수의 값은 변경될 수 없습니다.

숫자 단위 언더바(_) 표기법

자바 7부터는 숫자가 너무 길어서 읽기 힘들 때, 가독성을 높이기 위해 숫자 중간에 언더바(_)를 넣을 수 있도록 지원합니다.

long myBankBalance = 1_000_000_000L; // 10억
// 출력할 때는 언더바를 제외한 진짜 숫자만 정상적으로 처리됩니다.
Advertisement