Just do IT
article thumbnail
Published 2021. 7. 15. 17:40
Java Type (기본 타입) Programing/JAVA

자바의 자료형 - 기본 타입 (Primitive Type)

▶ 기본타입(Primitive Type) 이란?

 primitive : 초기의, 원시적인 단계의

- 데이터 타입(data type)은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 합니다.

- 자바(Java)에서는 여러 형태의 타입을 미리 정의하여 제공하고 있는게 이것을 기본 타입(primitive type)이라고 합니다.

- 자바(Java)에서 제공하는 기본타입은 모두 8종류이며 크게는 정수형, 실수형, 문자형, 그리고 논리형 타입으로 나눌 수 있습니다.


▶ 정수형 타입

- 자바에서 정수란 부호를 가지고 있으며, 소수 부분이 없는 수입니다.

- 자바의 기본 타입 중 정수를 나타내는 타입은 byte, short, int, long 이렇게 있습니다.

- 각각의 정수형 타입에 따른 메모리의 크기 및 데이터의 표현 범위를 보도록 하겠습니다.

정수형 타입 할당되는 메모리의 크기 데이터의 표현 범위
byte 1 바이트 -128 ~ 127
short 2 바이트 -2^15 ~ (2^15-1)
-32,768 ~ 32,767
int 4 바이트 -2^31 ~ (2^31 - 1)
-2,147,483,648 ~ 2,147,483,647
long 8 바이트 -2^63 ~ (2^63 -1)
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

- 정수형 데이터 타입을 결정할 때에는 반드시 자신이 사용하고자 하는 데이터의 최대 크기를 고려해야 합니다. 해당 타입의 범위를 벗어난 데이터를 저장하면, 오버플로우(overflow)가 발생해 전혀 다른 값이 저장될 수 있습니다.

※ overflow : 넘치다, 넘쳐나다, 초과됨

- 해당 타입이 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상입니다.

- 반대로 언더플로우(underflow)란 해당 타입이 표현할 수 있는 최고 범위보다 작은 수를 저장할 때 발생하는 현상입니다.

 

// 오버플로우나 언더플로우가 발생한 예
public class Datatype{	
    public static void main(String[] args){
    	
        byte num1 = 127;  // byte의 최대 범위
        byte num2 = -128; // byte의 최소 범위
        
        num1++; // 127 + 1 -> 최대 범위에 +1 -> 오버플로우
        num2--  // -128 -1 -> 최소 범위에 -1 -> 언더플로우
        
        System.out.println(num1);  // 오버플로우
        System.out.println(num2);  // 언더플로우
        
    }    
}

-----------------------------------------------------------------------
출력 결과
-128 -> num1의 오버플로우 결과
127 -> num2의 언더플로우 결과

 

※ 자바에서 정수형 타입의 기본이 되는 타입은 int형입니다. 따라서 컴퓨터는 내부적으로 정수형 중에서도 int형의 데이터를 가장 빠르게 처리합니다.


실수형 타입

- 자바에서 실수란 소수부나 지수부가 있는 수를 가리키며, 정부보다 훨씬 더 넓은 표현 범위를 가집니다.

- 자바의 기본 타입 중 실수를 나타내는 타입은 float, double이 있습니다.

- 과거에는 실수를 표현할 때 float형을 많이 사용했지만, 하드웨어의 발달로 인한 메모리 공간의 증가로 현재에는 double형을 가장 많이 사용합니다.

- 각각의 실수형 타입에 따른 메모리의 크기 및 데이터의 표현 범위를 보도록 하겠습니다.

※ 실수형 데이터의 타입을 결정할 때에는 표현 범위 이외에도 반드시 유효 자릿수를 고려해야 합니다.

실수형 타입 지수의 길이 가수의 길이 유효 자릿수
float 8 비트 23 비트 소수부분 6자리까지 오차없이 표현할 수 있음
double 11 비트 52 비트 소수부분 15자리까지 오차없이 표현할 수 있음
실수형 타입 할당되는 메모리의 크기 데이터의 표현 범위 리터럴 타입 접미사
float 4 바이트 (3.4 X 10^-38) ~ (3.4 X 10^38) F 또는 f
double 8 바이트 (1.7 X 10^-308) ~ (1.7 X 10^308) D 또는 d (생략 가능함)

※ 컴퓨터에서 실수를 표현하는 방식은 오차가 발생할 수 밖에 없는 태생적 한계를 지니고 있습니다. 이러한 실수형 데이터의 오차는 자바 뿐만 아니라 모든 프로그래밍 언어에서 발생하는 공통된 문제입니다.


문자형 타입

- 자바에서 문자형 데이터란 작은 정수나 문자 하나를 표현할 수 있는 타입을 의미합니다.

- 자바의 기본 타입 중 문자를 나타내는 타입은 char이 있습니다.

- 컴퓨터는 2진수 밖에 인식하지 못하기 때문에 문자도 숫자로 표현해야 인식할 수 있습니다. 따라서 어떤 문자를 어떤 숫자에 대응시킬 것인가에 대한 약속이 필요했습니다. 

※ C언어와 C++에서의 약속 : 아스키코드(ASCII)

    아스키코드(ASCII) : 영문 대소문자를 사용하는 7비트의 문자 인코딩 방식입니다.

                    아스키코드는 문자 하나를 7비트로 표현하므로, 총 128개의 문자를 표현할 수 있습니다.

※ 자바에서의 약속 : 유니코드(unicode)

    유니코드 : 각 나라의 모든 언어를 표현할 수 있습니다.

                  문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있습니다.

    유니코드 표 : http://www.unicode.org/charts/PDF/UAC00.pdf

                      ▲ 링크를 통해서 유니코드 표를 보실 수 있습니다.

 

▼ 아스키코드  표 (ASCII)

아스키코드 표 (ASCII)

- 문자형 타입에 따른 메모리의 크기 및 데이터의 표현 범위를 보도록 하겠습니다.

문자형 타입 할당되는 메모리의 크기 데이터의 표현 범위
char 2 바이트 0 ~ 2^16

논리형 타입

- 논리형은 참(true)과 거짓(false) 중 한 가지 값만 가질 수 있는 불리언 타입을 의미합니다.

- 자바의 기본 타입 중 논리형 타입은 boolean 타입입니다.

- boolean형기본값은 false이며, 기본 타입 중 가장 작은 크기인 1 바이트의 크기를 가집니다.

- 논리형 타입에 따른 메모리의 크기 및 데이터의 표현 범위를 보도록 하겠습니다.

논리형 타입 할당되는 메모리의 크기 데이터의 표현 범위
boolean 1 바이트 true 또는 false

 

Java Type (실수의 표현)

'Programing > JAVA' 카테고리의 다른 글

Java Type (타입 변환)  (0) 2021.07.16
Java Type (실수의 표현)  (0) 2021.07.16
Java Type (상수)  (0) 2021.07.15
Java Type (변수)  (0) 2021.07.15
Java 출력 메소드  (0) 2021.07.15
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!