Home > Java > 기본형(Primitive Data Type)

기본형(Primitive Data Type)
java

데이터 타입 또는 자료형은 컴퓨터 과학과 프로그래밍 언어에서 실수치, 정수, 불린 자료형 따위의 여러 종류의 데이터를 식별하는 분류이다. (feat. 위키백과)

기본형의 메모리 저장 방식

  • 기본형은 Stack 영역실제 값을 저장한다.
  • ex)

기본형 종류 (8개)

타입 크기(byte) 기본값(default) 기타
byte 1 -128~127 0  
short 2 -32,768~32,767 0  
int 4 -2^31~2^31-1 (약 ±21억) 0 기본 정수 타입
long 8 -2^63~2^63-1 0L  
float 4 약 7자리의 정밀도 0.0f  
double 8 약 15자리의 정밀도 0.0 기본 실수 타입
char 2 0~65,535 (유니코드 값) ‘\u0000’  
boolean 1 true 또는 false false  

기본형 선언 및 초기화

// 정수 값(리터럴)은 기본적으로 int 타입이다.
// 실수 값(리터럴)은 기본적으로 double 타입이다.

byte b1 = 100; // 출력 : 100
byte b2 = 200; // 컴파일 오류
byte b3 = (byte) 200; // 출력 : -56 -> Overflow

short s1 = 1000; // 출력 : 1000
short s2 = 1_000; // 출력: 1000

int i1 = 100000; // 출력 : 100000
int i2 = 100_000; // 출력 : 100000

long l1 = 123456789L; // 출력 : 123456789 -> L은 값이 long 타입임을 명시함
long l2 = 123_456_789L; // 출력 : 123456789
long l3 = 123456789; // 출력 : 123456789 -> 자동 형 변환 (int -> long)
long l4 = 3_000_000_000; // 컴파일 오류

float f1 = 3.14f; // 출력 : 3.14 -> f는 값이 float 타입임을 명시함
float f2 = 3.14; // 컴파일 오류
float f3 = (float) 3.14; // 출력 : 3.14 -> 명시적 형 변환 (double -> float)

double d1 = 3.141592; // 출력 : 3.141592
double d2 = 100; // 출력 : 100.0 -> 자동 형 변환 (int -> double)

char c1 = 'A'; // 출력 : A
char c2 = 65; // 출력 : A
char c3 = 'a'; // 출력 : a
char c4 = 97; // 출력 : a

boolean bool1 = true; // 출력 : true
boolean bool2 = 0;  // 컴파일 오류
boolean bool3 = 1;  // 컴파일 오류

기본형 연산

  • 연산을 수행할 때, byte, short, char는 모두 int로 변환된다.
      byte b = 10;
      short s = 100;
      short short_b_s = b + s; // 컴파일 오류
      short short_b_s_correct = (short) (b + s); // 출력 : 110
      int int_b_s = b + s; // 출력 : 110
    
      char c1 = 'A'; // 유니코드 65
      char c2 = 'a'; // 유니코드 97
      char char_c1_c2 = c1 + c2; // 컴파일 오류
      char char_c1_c2_correct = (char) (c1 + c2); // 출력 : ¢ -> 유니코드 162에 해당하는 문자
      int int_c1_c2 = c1 + c2; // 출력 : 162
      int i = 32;
      char char_c1_i = c1 + i; // 컴파일 오류
      char char_c1_i_correct = (char) (c1 + i); // 출력 : a
      int int_c1_i = c1 + i; // 출력 : 97
    
  • 피연산자 중 하나가 더 큰 타입이면, 작은 타입이 큰 타입으로 변환된다.
      int i1 = 2_000_000_000;
      int i2 = 2_000_000_000;
      int int_i1_i2 = i1 + i2; // 출력 : -294967296 -> Overflow
      long long_i1_i2 = i1 + i2; // 출력 : -294967296 -> Overflow
      long long_i1_i2_correct1 = (long) i1 + i2; // 출력 : 4000000000 -> long + int = long
      long long_i1_i2_correct2 = i1 + (long) i2; // 출력 : 4000000000
    
      double d = 3.14;
      int i3 = 10;
      double double_d_i3 = d + i3; // 출력 : 13.14 -> double + int = double