
정수, 실수, 논리, 문자형 타입을 기본 타입(Primitive Type)이라고 한다.
기본 타입은 정해진 메모리 크기(byte)를 사용해 값을 저장하는데 바이트 크기가 클수록 표현하는 값의 범위가 크다.
| 타입 | 자료형 | 범위 | 크기(byte) | 기본값 |
|---|---|---|---|---|
| 정수형 | byte | -128 ~ 127 | 1 | 0 |
| 정수형 | short | -32,768 ~ 32767 | 2 | 0 |
| 정수형 | int | -2,147,483,648 ~ 2,147,483,647 | 4 | 0 |
| 정수형 | long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 8 | 0L |
| 실수형 | float | ±1.4E-45 ~ 3.4E38 | 4 | 0.0f |
| 실수형 | double | ±4.9E-324 ~ 1.8E308 | 8 | 0.0 또는 0.0d |
| 논리형 | boolean | true, false | 1 | false |
| 문자형 | char | 0 ~ 65,535 (유니코드) | 2 | '\u0000' |
public void dataType(){
// 정수형 변수
byte bNum ; // 1byte의 정수를 담을 수 있는 변수를 선언한다.
short sNum; // 2byte의 정수를 담을 수 있는 변수를 선언한다.
int iNum; // 4byte의 정수를 담을 수 있는 변수를 선언한다.
long lNum; // 8byte의 정수를 담을 수 있는 변수를 선언한다.
// 실수형 변수
float fNum; // 4byte의 실수를 담을 수 있는 변수를 선언한다.
double dNum; // 8byte의 실수를 담을 수 있는 변수를 선언한다.
// 논리형 변수
boolean isTrue; // 1byte의 논리 값을 담을 수 있는 변수를 선언한다.
// 문자형
char ch1 = 'A'; // 2byte의 문자(유니코드)를 담을 수 있는 변수를 선언한다.
char ch2 = 65;
// char ch3 = -65; 에러 발생: char 타입은 0 ~ 65,535 (유니코드)
// -----------------------------------------------------------
// bNum = 128; // 에러 발생: 1 byte는 -128 ~ 127
bNum = 127;
sNum = 32767; // short 타입은 -32,768 ~ 32767
iNum = 2147483647; // int 타입은 -2,147,483,648 ~ 2,147,483,647
// long 타입은 숫자 뒤에 1L 형태의 리터럴 입력이 필요함
// long 타입은 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
lNum = 2147483648L;
// float 타입은 리터럴 입력이 필요함 ex). xx.123F
fNum = 3.141592F;
dNum = 3.14159265358972; // double 타입은 리터럴 입력이 필요하지 않음
}
Heap 메모리 영역에 생성된 객체의 주소값을 저장하고
이를 통해 객체에 접근할 수 있도록 하는 변수를 참조 변수(Reference Variable)라고 한다.
예를 들어 다음 코드에서

변수 hong과 lee는 Stack 영역에 생성되며
"Person" 객체는 Heap 영역에 저장된다.
즉, hong, lee는 "Person" 객체의 주소값을 참조하고 있는 참조 변수이다.
public class StrExam {
// 문자열
String name1; // 문자열을 가리킬 수 있는 '참조 변수'를 선언한다.
String name2 = ""; // 빈 문자열로 초기화
String name3 = new String("Hong"); // new 연산자로 문자열 초기화
String name4 = "Hong"; // 문자열 리터럴
// null 초기화 (아무곳도 참조하지 않는다는 의미)
String address = null;
}
소스 코드에서 프로그래머에 의해 직접 입력된 값을 리터럴이라고 한다.
| 리터럴 종류 | 예시 | 기본 타입 | 비고 |
|---|---|---|---|
| 정수 리터럴 | 10, 100, 0xFF | int | L 접미사 사용 시 long |
| 실수 리터럴 | 3.14, 0.5 | double | f/F 접미사 사용 시 float |
| 문자 리터럴 | 'A', '가' | char | 유니코드 문자 1개 |
| 문자열 리터럴 | "Java" | String | Heap의 String Pool에 저장 |
| 논리 리터럴 | true, false | boolean | 참/거짓 값 |
| null 리터럴 | null | 없음 | 참조형에만 대입 가능 |