Programming Languages/Java

[JAVA] 자바 기본형 타입 종류와 크기

Hannana. 2024. 6. 27. 10:26
반응형

 

자바의 기본형 변수는 메모리 스택 영역에 그 값을 바로 저장한다.

(별도의 힙 메모리 영역에 값을 저장하고, 스택 영역의 변수가 이를 참조하는 참조형 변수와 차이)

 

이 기본형 변수의 크기 단위는 바이트(1바이트=8비트)로 표시한다. 

8비트는 2^8 = 256개의 값을 표현할 수 있다.

이 값들은 부호가 있을 때와 없을 때 범위가 달라지는데,

각 자료형이 얼마의 값 범위를 내포하는지 알아보자.

 

 

1) 부호가 있는 경우 (Signed)

-부호가 있는 형 종류 : byte, short, int, long

-가장 왼쪽의 비트를 부호 비트로 사용한다.
-정수형 데이터 타입에서 음수와 양수를 모두 표현 가능
-부호 비트가 0이면 양수, 1이면 음수
(= 2의 보수(2's complement) 표기법)
-범위 계산법 :  -2^(n-1) ~ 2^(n-1) - 1 (n은 비트 수)

 

ex:) byte는 1바이트, 즉 8비트이므로 범위는 -2^7 ~ 2^7 - 1

=>  -128 ~ 127

int는 4바이트, 즉 32비트이므로 범위는 -2^31 ~ 2^31 - 1

=>   -2,147,483,648 ~ 2,147,483,647

 

 

 

2) 부호가 없는 경우 (Unsigned)

- 부호가 없는 형 종류 : char

-부호가 없는 경우, 모든 비트를 값 표현에 사용한다. (부호 비트 존재X)
-범위 계산법 : 0 ~ 2^n - 1 (n은 비트 수)

 

ex:) char는 2바이트, 즉 16비트이므로 범위는 0 ~ 2^16 - 1

=>  0 ~ 65,535

 

 

■ 기본형 데이터 타입 요약

-데이터 타입크기 (바이트)비트 수 범위

타입 바이트 비트 범위
byte 1 8 -128 ~ 127
short 2 16 -32,768 ~ 32,767
int 4 32 -2,147,483,648 ~ 2,147,483,647
long 8 64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4 32 1.4E-45 ~ 3.4028235E38
double 8 64 4.9E-324 ~ 1.7976931348623157E308
char 2 16 0 ~ 65,535 (유니코드)
boolean 명시되지 않음 명시되지 않음 true 또는 false

 

 

 

■ 기본형 변수 할당 테스트

-각 타입의 최솟값을 부여해 출력해본다.

-char를 제외한 기본형 변수는 모두 - 범위까지 포함하여 담는 것을 확인할 수 있다.

public class SignedTypesExample {
    public static void main(String[] args) {
        byte byteVal = -128;
        short shortVal = -32768;
        int intVal = -2147483648;
        long longVal = -9223372036854775808L;
        char charVal = 0; // 부호 없는 타입

        System.out.println("byte value: " + byteVal);
        System.out.println("short value: " + shortVal);
        System.out.println("int value: " + intVal);
        System.out.println("long value: " + longVal);
        System.out.println("char value: " + (int) charVal); // char 값을 int로 출력
    }
}

 

결과

byte value: -128
short value: -32768
int value: -2147483648
long value: -9223372036854775808
char value: 0

 

 

 


 

 

각 자료형의 크기 범위를 알아두면

코테나 개발 시에 효율적인 코딩이 가능할 것 같다.

 

 

 

반응형