본문 바로가기
Java/총정리

[Java] 2. 자바 기본 자료형 총정리 (타입)

by bigpicture 2022. 9. 1.
반응형

자바 기본 타입

변수에 저장하려는 값의 종류를 타입 또는 자료형이라고 합니다. 타입이라고 부르겠습니다. Java에서 제공하는 기본타입은 아래와 같습니다. 

- 정수
- 실수
- 논리값

정수와 실수 타입은 메모리를 차지하는 길이에 따라 다시 나뉩니다. 정리하면 아래와 같습니다. 

 

여러 타입이 있는 이유

정수형이 5개나 있는 이유는 메모리를 효율적으로 사용하기 위함입니다. 작은 숫자를 입력하는데 굳이 큰 메모리를 사용할 필요는 없습니다. 작은 정수는 short을 크기가 커지만 int 나 long 을 사용하여 메모리를 효율적으로 사용할 수 있습니다. 

 

주의할 점

- long 타입을 입력할 때는 숫자 뒤에 L을 붙여야 함. (ex. long num = 300L;)

- float 타입을 입력할 때는 숫자 뒤에 f를 붙여야 함. (ex. float num = 11.1f;)

 

char 타입은 정수와 무엇이 다른가

컴퓨터는 0과 1만을 저장합니다. 따라서 정수와 실수는 2진수로 저장되고, 문자도 2진수로 저장됩니다. 문자를 숫자로 저장하기 위해 문자를 숫자에 대응시켜놓은 약속이 있습니다. 이 약속이 유니코드입니다. 예르들어 'A' 를 컴퓨터에 저장하면 A에 해당되는 숫자인 65가 저장됩니다. 65를 int 형으로 출력하면 65가 출력되지만 char 형으로 출력하면 A 가 출력됩니다.

 

타입 자동 변환

어떤 타입으로 선언된 변수를 다른 타입에 입력할 때 자동으로 변환이 일어나는 경우가 있습니다. 더 큰 타입으로 변환될 경우 자동타입변환이 일어납니다. 크기 순서는 아래와 같습니다. 

byte < short < int < long < float < double

예를들면 아래와 같습니다. 아래 코드는 허용됩니다. 


int a=3;
float b=a;


정수 연산에서 타입 자동변환

btye, char, short int 타입의 변수들을 연산할 경우 연산 결과의 타입은 항상 int 입니다. 아래 코드를 봅시다. 

short a=3;
short b=5;


이때, a+b 의 타입은 int 입니다. 

 

실수 연산에서 타입 자동변환

- float 타입과 float 타입의 연산 결과는 float
- double 타입과 double 타입의 연산 결과는 double
- float 타입과 double 타입의 연산 결과는 double

 

타입 강제 변환

큰 타입을 작은 타입으로 변환할 경우 강제로 변환한다는 선언을 해야합니다. 아래와 같이 합니다. 

float a=3;
int b=(int)a;

 

정수와 정수 연산 결과를 실수로 변환

먼저 아래 출력결과가 무엇일지 예상해봅시다. 

 

    int a=3;
    int b=2;
    double res=a/b;
    
    System.out.println(res);

 

a/b 는 1.5 인데, 정수 연산의 결과는 정수이기 때문에 1이 출력됩니다. 실수인 1.5를 출력하려면 앞에 강제 변환인 (double)을 붙여주어야 합니다. 그런데 여기서 붙여주는 방법에 주의해야 합니다. 

 

아래 연산 결과는 무엇일지 예상해봅시다. 

 

    int a=3;
    int b=2;
    double res= (double) (a/b);
    
    System.out.println(res);

 

연산 결과는 1입니다. a/b 가 먼저 계산되고 나서 (double) 변환이 일어나기 때문입니다. 실수 1.5가 출력되도록 하려면 아래와 같이 선언해야 합니다. 

 

    int a=3;
    int b=2;
    double res= (double) a/b;
    
    System.out.println(res);

 

위 식의 의미를 제대로 이해해야 합니다. 위 식은 a의 (double) 변환이 일어나고, 이후 b로 나눈 것입니다. 따라서 실수/정수 형태이므로 결과는 실수가 출력되는 것입니다. 

반응형

'Java > 총정리' 카테고리의 다른 글

[Java] 6. 자바 반복문 총정리  (0) 2022.09.02
[Java] 5. 자바 조건문 총정리  (0) 2022.09.02
[Java] 4. 자바 연산자 총정리  (0) 2022.09.02
[Java] 3. 자바 문자열 총정리  (0) 2022.09.02
[Java] 1. 자바 변수 총정리  (0) 2022.09.01

댓글