변수의 자료형은 여러 가지가 있다고 했었습니다.

코딩할 때 어떤 자료형을 사용할지는 그 변수에 담을 데이터의 크기에 따라 결정하면 됩니다.

각 자료형이 담을 수 있는 데이터의 크기는 다음과 같습니다.


byte : 1byte

short : 2byte

int : 4byte

long : 8byte


1byte=8bit 이고 각 자료형은 음수와 양수를 담을 수 있기 때문에

byte 타입을 예로 들면 2의 8제곱인 256가지 수를 표현할 수 있습니다.

가능한 범위는 -128~127이 됩니다.

각 자료형이 표현 가능한 범위를 넘어선 연산을 하게 되면 오버플로우가 발생하게 되는데 이 부분은 나중에 배우도록 하겠습니다.


담을 수 있는 범위를 정리해보면 다음과 같습니다.


byte : -128~127

short : -32768~32767

int : -2147483648~2147483647

long : -9223372036854775808~9223372036854775807


범위가 클수록 자료형이 차지하는 공간도 많아지기 때문에 필요하지 않으면 더 작은 자료형을 사용하는 것이 좋습니다.


다음 코드로 예를 들어 보겠습니다.



public class Variables_Extra {

public static void main(String[] args) {

byte b = 127;

short s = 32767;

int i = 2147483647;

long l = 9223372036854775807l;

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(l);

i=i+1;

System.out.println(i);

}

}


위의 코드를 실행하면 결과는 다음과 같습니다.


각 타입의 변수에 그 변수에 넣을 수 있는 최댓값을 넣고 출력해보았습니다.

제대로 출력되는 것을 확인할 수 있습니다.

그 다음, 이미 최댓값인 127이 들어있는 변수 i에 1을 더해보았습니다.

출력해보면 이상한 128이 아닌 이상한 값이 들어 있는 것을 확인할 수 있습니다.

이것이 앞에서 말한 오버 플로우입니다.

보관할 수 있는 범위를 넘어서면 발생하게 됩니다.

일단은 이런 것이 있다는 것만 알아두고

이를 방지하기 위해서 필요한 타입의 변수를 적절히 사용하면 된다는 것만 알아두면 되겠습니다.

+ Recent posts