NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Java 8. Java의 정수형. (int와 Integer)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 이제 추석이 다가오는군요^^; 회사에서 나눠주는 명절 선물을 하나씩 들고 퇴근 하는 모습을 보니 명절 분위기가 나는것 같아요. 옛날에는 설, 추석이나 크리스마스 때면 명절 분위기가 물씬 풍기곤 했는데요. 요즘은 거리에서 그런 분위기를 느끼기가 힘들군요. 지방에 살아서 그럴수도 있겠지만 말이예요.

     

    오늘은 Java의 정수형 자료 타입에 대해서 알아 보겠습니다. C#의 정수형 자료 타입과 비교하려면 [ 여기 ] 를 참고하세요.

     

    다음 표에서는 단순 형식의 하위 집합을 구성하는 정수 계열 형식의 크기 및 범위를 보여 줍니다. Java는 C#과 다르게 Unsigned 타입이 char 하나뿐입니다. 자주 사용하지 않을뿐더러 복잡성만 가중 시킨다는 이유로 만들지 않았다고 합니다. C#의 경우에는 정수와 실수 모두 Unsigned 타입이 존재합니다만, 거의 사용되지 않고 있는걸로 알고 있습니다.

    형식

    범위

    크기

     byte

     -128 ~ 127

     부호 있는 8비트 정수

     char

     \u0000 ~ \uFFFF

     유니코드 16비트 문자

     short

     -32,768 ~ 32,767

     부호 있는 16비트 정수

     int

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

     부호 있는 32비트 정수

     long

     -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

     부호 있는 64비트 정수

     

     

    참고로 값 형식의 경우 필드(Field)는 값을 초기화 하지 않으면, 자동으로 기본값으로 초기화가 됩니다. 아래 표는 값 형식이 클래스 내부에서 필드로 사용될 때 초기화되는 값입니다.

    형식 (Type)

    필드 기본 값 (Default value for fields) 

     byte

     0

     short

     0

     int

     0

     long

     0L

     float

     0.0f

     double

     0.0d

     char

     '\u0000' (C#은 '\0')

     String

     null

     boolean

     false

     enum (C# only)

     열거자의 식별자에 의해 생성된 값입니다. 값을 지정하지 않으면 0입니다.

     struct (C# only)

     각 필드 형식으로 초기화되며 참조 타입의 필드는 null로 초기화 됩니다.

     

     

    Java는 C#처럼 Unsigned 타입이 없으므로 딱히 자료형의 범위를 비교할 필요가 없습니다. 대신, C#에는 존재하지 않는 Integer가 있습니다. 위의 표에 있는 자료형을 Primitive(원시) 자료형이라 부릅니다. Integer는 Wrapper클래스죠. 이 둘의 차이는 산술 연산이 가능한지와 null로 초기화 할 수 있는지 여부입니다.

     

    Integer는 null로 초기화 할 수 있는 대신 산술 연산이 불가능합니다. 따라서 ORM을 이용한 데이타를 바인딩할 때는 좋을 수 있으나 값을 가져와서 연산을 해야 한다면 반드시 Unboxing을 통해 원시 자료형으로 변환해줘야 합니다. 또한, int보다 5배나 많은 메모리를 차지하므로 그리 자주 사용되지는 않습니다. 아직 Boxing 및 Unboxing에 대해서 배우지 않았으므로 이 글에서 설명하는 내용을 심각하게 받아들일 필요는 없습니다.

     

    원시 자료형에 대해 null로 초기화 하는 방법은 Java의 Wrapper 클래스와 C#의 Nullable에서 좀 더 자세하게 다루도록 하겠습니다. 여기에서 오해가 있을 수 있는데 Java는 엄연히 클래스며(Primitive type이 아님), C#의 경우에는 값이 없는 상태를 나타낼 수 있는 Nullable 형식이 존재합니다.

     

    다음 시간에...

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.