[Java] 기본 자료형 정리

Kim Hyen Su·2024년 3월 19일
0

📐Java

목록 보기
9/18
post-thumbnail

📐 정수 자료형


자바의 정수를 표현하기 위한 자료형은 int, long 등이 있습니다.

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

위 수의 범위는 외우기 어렵기 때문에, Wrapper 클래스의 상수인 MIN_VALUE 와 MAX_VALUE를 출력하여 확인이 가능하다는 정도만 알고 있으면 됩니다.

💡

long 변수에 값 대입 시, 숫자 값이 int 자료형의 최대값보다 큰 경우 'L' 과 같은 접미사를 붙여줘야 합니다.
만약, 접미사 누락 시 컴파일 에러가 발생합니다.

정수 오버플로우 / 언더플로우

정수형 데이터 타입 사용 시 반드시 자신이 사용하고자 하는 데이터 타입의 최소와 최대 크기를 고려해야 합니다.

만약, 해당 타입이 표현할 수 있는 범위를 벗어난 데이터 저장 시, 오버플로우(overflow)가 발생하여 전혀 다른 값이 저장될 수 있기 때문입니다.

  • 오버플로우 : 해당 타입이 표현할 수 있는 '최대 표현 범위' 보다 큰 수를 저장 시 발생하는 현상.
  • 언더플로우 : 해당 타입이 표현할 수 있는 '최소 표현 범위' 보다 작은 수 저장 시 발생하는 현상.
		byte max = 127;
        byte min = -128;

        for(byte i = max; i < 129; i++){ // 무한 루프
            System.out.println(i);
        }

위 코드는 무한로프에 빠지게 됩니다. 일반적인 생각으로는 127, 128 까지 출력 후 반복문이 종료될 것이라고 생각하지만, byte 자료형의 범위를 넘기게 되면, 이는 127 다음에 -128,-127,-126 ... 0, 1, ... 126, 127, -128이 반복적으로 출력되게 됩니다.

이처럼 의도치 않은 결과를 출력하게 되기 때문에, 자료형의 크기를 알맞게 선언해줘야 합니다.

underscore 표기법

언더스코어 표기법은 JDK 7 버전 부터 지원하는 문법으로, 우리가 큰 숫자를 콤마로 표현하듯이 자바에서 콤마 대신 언더바(_)로 표현하여도 컴퓨터에서는 콤마로 인식하도록 하는 표기법입니다.

		int num = 1_000_000; // 1,000,000

2진수 / 8진수 / 16진수

8진수와 16진수 정수는 int 자료형을 사용하여 표시하지만, 숫자 앞에 기호를 붙여주어서 이 둘을 구분할 수 있습니다.

		int octal = 011;
        System.out.println("8진법(octal) : " + octal); // 9

        int hex = 0xA;
        System.out.println("16진법(hex) : " + hex); // 10

        int binary = 0b1011;
        System.out.println("2진법(binary) : " + binary); // 11
profile
백엔드 서버 엔지니어

0개의 댓글