2) 변수2 - 데이터 타입

dev-mage·2022년 9월 7일
0

Hello Java World!

목록 보기
4/32
post-thumbnail

Java의 데이터 타입(기본형, 참조형)

데이터 타입과 종류

값의 종류에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것을 데이터 타입이라고 한다. 데이터 타입은 크게 기본형(Primitive Data Types)과 참조형(Reference Data Types)으로 나뉜다. 기본형에는 8가지 자료형이 있고 참조형은 기본형을 제외한 나머지 자료형이라고 할 수 있다. 기본형은 8가지 타입의 실제 값을 갖지만 참조형은 어떤 값이 저장돼 있는 메모리상의 주소를 저장한다.

기본형

기본형에는 다음과 같이 8가지의 자료형들이 있다.

구분기본값값의 범위데이터 크기
byte정수형0-128 ~ 1271byte
short정수형0-32768 ~ 327672byte
int정수형0-2147483648 ~ 21474836474byte
long정수형0L-9223372036854775808 ~
92233720368547758078byte
char정수형* /
문자형'\u0000''\u0000' ~ '\uffff'
⇒ 0 ~ 655352byte
float부동소수점형0.0f±1.4×10⁻⁴⁵ ~ 3.4×10³⁸의 근사값
(오차없이 7자리)4byte
double부동소수점형0.0d±4.9×10⁻³²⁴ ~ ±1.7×10³⁰⁸의 근사값
(오차없이 15자리)8byte
boolean논리형falsetrue, false1byte*

※ char는 보통 문자형으로 나뉘지만 The Java® Language Specification에서는 정수형으로 분류되고 있다.

※ boolean의 데이터 크기는 정확히 알 수 없다:

boolean은 1bit의 정보를 나타내지만 실제 데이터 크기는 정확하게 알 수 없다. JVM에 boolean 타입이 정의되어 있긴 하지만 값을 연산하기 위한 명령이 따로 없고 int나 byte 타입처럼 처리된다. 그래서 일반적으로 boolean 타입을 대부분의 컴퓨터에서 가장 작은 주소 단위로 쓰이는 1byte로 표현한다.

리터럴의 타입과 접미사

리터럴은 크게 5가지로 나눌 수 있다.

종류리터럴접미사
논리형false, true없음
정수형0, 123, 0b0101, 077, 0xFF, 100L 등…l(L)
실수형3.14, 3.0e8, 1.4f 등…f(F), d(D)
문자형‘A’, ‘1’, ‘\n’ 등…없음
문자열“ABC”, “123”. “A”, “true” 등…없음

정수형과 실수형에는 여러 타입이 존재하므로 리터럴에 접미사를 붙여 타입을 구분한다.

  • 정수형의 기본 데이터 타입이 int형이기 때문에 int형에는 접미사가 따로 붙지 않음. byte와 short형도 접미사를 붙이지 않고 int 타입의 리터럴을 사용함. long 타입에는 접미사 ‘l’(L)을 붙임.
  • 10진수 외에도 2, 8, 16진수로 표현된 리터럴을 변수에 저장할 수 있으며 2진수는 0b(0B), 8진수는 0, 16진수는 0x(0X)를 접두사로 붙여 표현.
    int bin = 0b10; // 2
    int oct = 010; // 8
    int hex = 0x10; // 16
  • JDK 1.7부터 정수형 리터럴의 중간에 구분자 ‘_’를 넣을 수 있게 되어 큰 숫자를 편하게 읽을 수 있게 되었음.
    long big = 100_000_000_000L; // 100000000000
  • 실수형의 기본 데이터 타입은 double이기 때문에 double 타입 리터럴의 접미사인 ‘d’(D)는 생략 가능하지만 float 타입의 접미사인 ‘f’(F)는 생략할 수 없음.
  • ‘A’와 같이 작은 따옴표로 문자 하나를 감싼 것을 문자 리터럴이라고 하며 char 타입임.
  • 두 문자 이상은 큰 따옴표로 감싸야하며 문자열 리터럴이라고 하며 String* 타입임. ※ String은 참조형이지만 리터럴을 지원. → 자세한 내용은 String 클래스, heap 메모리, String Constant Pool 검색
  • 문자열 리터럴은 “” 안에 아무런 문자도 넣지 않는 것을 허용하며, 이를 빈 문자열(empty string)이라고 함. 그러나 문자 리터럴은 반드시 ‘’안에 하나의 문자가 있어야 함.

참조형

참조형은 기본형처럼 값 자체를 저장하는 것이 아니라 값의 위치를 저장하고 그 주소를 참조하여 값을 찾는다. 참조형 변수 간의 연산은 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형이다.


References

0개의 댓글