정수 타입이란 숫자를 나타내는 타입으로 byte
, int
, long
, short
총 4개로 분류할 수 있다. 일반적으로는 int
형을 사용한다.
실수 타입이란 소수점을 가지는 값을 의미한다. float
형과 double
형으로 분류된다.
float
형 보다는 double
형의 정밀도가 더 높고, 더 큰 실수를 저장할 수 있다.
// float형 리터럴에는 반드시 접미사 f를 붙여줘야 함
float num1 = 3.14f;
//double형 리터럴에는 접미사 d를 붙이지 않아도 됨
double num2 = 3.141592d;
double num2 = 3.141592;
논리 타입의 종류는 boolean
형 하나다. 참 또는 거짓을 저장할 수 있는 데이터 타입으로, true
, false
만을 값으로 갖는다.
문자 타입의 종류도 char
형 하나다.
문자 타입의 변수를 선언하면 오직 하나의 문자형 리터럴을 저장할 수 있다.
문자형 리터럴은 반드시 작은 따옴표(''
)를 사용해야 한다. 큰 따옴표""
를 사용하면 문자열 리터럴로 인식된다.
변수를 선언할 때 타입을 명시해야 하는데, boolean
을 제외한 7가지의 타입들은 서로 타입을 변환할 수 있다. 자동으로 변환되는 경우도 있지만 수동으로 변환해주어야 하는 경우도 있다.
타입이 자동 변환되는 경우는 아래와 같다.
1. 바이트 크기가 작은 타입에서 큰 타입으로 변환하는 경우 (ex : byte
→ int
)
2. 더 정밀한 타입으로 변환하는 경우 (ex : 정수 → 실수)
아래 순서도는 화살표를 기준으로 좌측의 타입이 우측으로 자동 변환될 수 있는 경우다.
byte(1) → short(2), char(2) → int(4) → long(8) → float(4) → double(8)
차지하는 메모리의 용량이 더 큰 경우, 작은 타입으로 자동 변환이 되지 않는다. 더 큰 데이터 타입을 작은 데이터 타입의 변수에 저장하기 위해 수동으로 변한해주어야 한다. 이를 casting이라고 한다.
int inValue = 128;
byte byValue = (byte)inValue;
System.out.println(byteValue);
int
형의 리터럴 128을 byte
형으로 캐스팅해 byValue
에 할당했다. byte
의 표현 범위는 -128 ~ 127이다. 128을 byte
형으로 변환하게 되면 오버플로우가 발생해 최종적으로는 -128이 저장된다.
자바에서는 String 클래스 타입을 사용해 문자열을 다룬다. 클래스 그 자체로도 타입으로 사용될 수 있고, 연관 기능들을 묶을 수 있다.
String은 기본적으로 큰 따옴표(""
)로 감싸진 문자열을 의미한다.