ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 타입 선언
    언어/Java 2020. 12. 26. 20:12

    정수 타입

    타입메모리크기범위
    byte1 byte8 bit-2⁷ ~ (2⁷ - 1)-128 ~ 127
    short2 byte16 bit-2¹⁵ ~ (2¹⁵ - 1)-32,768 ~ 32,767
    char2 byte16 bit0 ~ (2¹⁶ - 1)0 ~ 65535 (유니코드)
    int4 byte32 bit-2³¹ ~ (2³¹ - 1)-2,147,483,648 ~ 2,147,483,647
    long8 byte64 bit-2⁶³ ~ (2⁶³ - 1)-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

    int

    2진수

    0b 또는 0B로 시작하고 0과 1로 구성

    • 0b1011 → 11
    • 0b10100 → 20

    8진수

    0으로 시작하고 0 ~ 7로 구성

    • 013 → 11
    • 0206 → 134

    10진수

    소수점이 없는 0 ~ 9로 구성

    • 11
    • 124

    16진수

    0x 또는 0X로 시작하고 0 ~ 9 와 A,B,C,D,E,F 또는 a,b,c,d,e,f 로 구성

    • 0xb3 → 179
    • 0x2a0f → 10767

    long

    기본적으로 컴파일러는 정수 리터럴을 int로 간주하므로 int 타입의 허용범위를 넘어갈 경우, long 타입임을 선언해야 함

    • 정수 리터럴 뒤에 l이나 L을 붙이는데 소문자 l은 숫자 1과 비슷하므로 대문자 L을 사용
    long var = 30000000000; // 컴파일 에러
    long var2 = 30000000000L;

    char

    하나의 문자를 따옴표로 감싼 것을 문자 리터럴이라고 함

    • 문자 리터럴은 유니코드로 변환돼 저장
    char var1 = 'A'; // 유니코드 65
    char var2 = 'B'; // 유니코드 66
    char var3 = '가'; // 유니코드 44032
    char var4 = '각'; // 유니코드 44033


    유니코드는 정수이므로 char도 정수타입에 속합니다. 따라서 10진수나 16진수 형태로 유니코드를 저장할 수 있습니다.

    char var1 = 65; // 'A' 의 10진수 유니코드
    char var2 = 0x0041; // 'A' 의 16진수 유니코드
    char var3 = 70000; // 컴파일 에러

    주의

    String 타입

    큰 타옴표로 감싼 문자 또는 문자열은 유니코드로 변환되지 않습니다.

    • String var1 = "A";
    • String var2 = "AAA";

    실수 타입

    타입메모리크기저장되는 값의 허용 범위 (양수기준)정밀도 (소수점 이하 자리)
    float4 byte32 bit(1.4 x 10⁻⁴⁵) ~ (3.4 x 10³⁸)7자리
    double8 byte64 bit(4.9 x 10⁻³²⁴) ~ (1.8 x 10³⁰⁸)15자리


    소수점이 있는 숫자 리터럴은 10진수 실수로 인식합니다

    • 0.24, 3.14

    알파벳 소문자 e 또는 대문다 E가 포함되어 있는 숫자 리터럴은 지수와 가수로 표현된 소수점이 있는 10진수 실수로 인식합니다.

    • 5e2 → 5.0 x 10² = 500.0
    • 0.12E-2 → 0.12 x 10⁻² = 0.0012


    자바에서는 실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에 특별히 float 타입으로 저장하고 싶다면 리터럴 뒤에 f나 F를 붙여야 합니다.

    float var1 = 3.14; // 컴파일 에러
    double var2 = 3.14;
    double var3 = 3.14e-5;
    float var4 = 3.14F;


    double이 float보다 더 많은 자리수를 표현하므로 더 정확합니다. 하지만 그 만큼 크기가 크므로 메모리가 제한적인 시스템에서는 유의하여 사용해야 합니다.

    논리 타입

    타입메모리크기범위
    boolean1 byte (대략)8 bittrue ~ false


    댓글