자바의 데이터 타입
- 데이터 타입(data type)이란 자바에서 다룰 수 있는 데이터의 종류를 말함

기본 타입 8개
- boolean (1비트, true or false)
- char (2바이트, Unicode)
- byte (1바이트, -128~127)
- short (2바이트, -32768~32767)
- int (4바이트)
- long (8바이트)
- float (4바이트)
- double (8바이트)
레퍼런스 타입 1개
- 용도 3가지
- 배열에 대한 레퍼런스
- 클래스에 대한 레퍼런스
- 인터페이스에 대한 레퍼런스
- 레퍼런스란 C/C++의 포인터와 비슷한 개념이다. 그러나 C/C++와 달리 실제 주소값을 가지지 않는다.
[C/C++과 자바의 문자 차이점]
- 자바에서 영어든 한글이든 문자 하나는 2바이트의 유니코드(Unicode)로 저장된다. 그러므로 자바에서 문자를 나타내는 char 타입은 크기가 2바이트이다.
- C/C++에서 영어는 1바이트, 한글은 2바이트로 표현되므로, 한글과 영어가 섞여 있는 문자열과 파일을 다루는 프로그램 작성은 자바보다 까다롭다.
문자열
문자열은 자바의 기본 타입에 속하지 않기 때문에, JDK의 자바 라이브러리에서 제공하는 String 클래스를 이용해야 한다.
문자열과 기본 타입의 + 연산 실행 시 기본 타입의 값이 문자열로 바뀌고 두 문자열이 연결되어 새로운 문자열이 생성된다.
[참고]
자바는 플랫폼 독립적인 언어이므로 CPU 처리 능력이나 OS에 따라 데이터가 차지하는 메모리 공간의 크기가 달라질 수 있는 다른 언어와 달리 데이터 타입의 크기가 항상 일정하다.
리터럴(literal)
- 프로그램에 직접 표현한 값
- 정수, 실수, 문자, 논리, 문자열 타입 리터럴이 있다.
- 정수 리터럴 4가지 유형
// 정수 리터럴 4가지 유형
int n = 15; //십진수 15
int m = 015; // 8진수로서 십진수 13
int k = 0x15; // 16진수로서 십진수 21
int b = 0b0101; // 2진수로서 십진수 5
- 정수 리터럴은 int 타입으로 자동 컴파일
- long 타입으로 지정하려면 숫자 뒤에 L 또는 l 붙이기
long g = 24L;
- 실수 리터럴은 소수점 형태나 지수(exponent) 형태
double d = 0.1234;
double e = 1234E-4; // 0.1234와 동일
- 숫자 뒤 f나 F를 붙이면 float, d나 D를 붙이면 double 타입으로 강제 변환 가능
float f = 0.1234f // f = 0.1234로 하면 컴파일 오류
double w = .1234D // .1234D와 .1234는 동일
- 문자 리터럴은 단일 인용부호(’’)로 문자를 표현하거나 \u 다음에 문자의 유니코드 값을 사용하여 표현한다.
char a = 'A';
char b = '나';
char c = \u0041; // 문자 'A'의 유니코드 값(0041) 사용
- 특수문자 리터럴은 백슬래시(\) 다음에 특수 기호를 붙여서 표현한다. 특수문자를 이스케이프 시퀀스(escape sequence)라고도 하며 종류는 다음과 같다.
| ‘\b’ | 백스페이스(backspace) |
| ‘\t’ | 탭(tab) |
| ‘\n’ | 라인피드(line feed) |
| ‘\f’ | 폼 피드 (form feed) |
| ‘\r’ | 캐리지 리턴(carriage return) |
| ‘\”’ | 이중 인용부호(double quote) |
| ‘\’’ | 단일 인용부호(single quote) |
| ‘\\’ | 백슬래시(backslash) |
- 유니코드(Unicode)는 SW가 다국어를 지원하기 용이하도록, 한 문자를 2바이트(16bit)로 하여 전 세계의 모든 문자 집합을 표현할 수 있도록 만든 산업 표준 코드체계로 유니코드 협회가 제정한다.
- 논리 리터럴과 boolean 타입
- 논리 리터럴은 true, false 2개 밖에 없으며, boolean 타입 변수에 직접 치환하거나 조건문에 사용한다.
- C/C++과 달리 자바에서 숫자를 참, 거짓으로 사용 불가하다
boolean c = 1; // !!!!! 타입 불일치 오류
while(1){} // !!!!!불가능!!!!!!!!
// ▼ 아래와 같이 해주어야 함
boolean c = true;
while(true){}
- 기본 타입 리터럴 외 2가지 리터럴
- null 리터럴 : 기본 타입에 사용 불가, 객체 레퍼런스에 대입된다
int n = null; // !!!!!!!!!!!! 오류. 기본 타입에 null 지정 불가능
String str = null; // 정상
- 문자열(String)리터럴 : 이중 인용부호로 표현, 간단히 문자열이라고 함
- 자바에서 문자열 리터럴을 포함하여 모든 문자열은 String 클래스의 객체이다. 그러므로 문자열 리터럴은 다음과 같이 String 객체에 저장.
String str = "good";'Java' 카테고리의 다른 글
| [Java] 자바 Math 클래스 - 수학 관련 함수 (0) | 2024.05.06 |
|---|---|
| [Java] 자바에서 키 입력 System.in과 Scanner (0) | 2024.05.03 |
| [Java] 자바의 생성자 목적과 특징, 기본 생성자, this 레퍼런스 (0) | 2024.04.08 |
| [Java] 컴파일 오류, 런타임 오류, 예외(exception) 차이 및 자바의 예외처리 클래스와 try-catch-finally (0) | 2024.04.08 |
| [Java] main() 메소드의 특징과 매개변수 (1) | 2024.04.08 |