목차


데이터타입과 변수


기본 자료형(Primitive Type)


Untitled

C 언어에서의 char의 자료크기는 1byte인데 Java에서의 자료형 크기는 2byte이다. 이는 C언어의 경우 아스키코드 문자를 기준으로 두고 있기에 1byte로 표현이 되는 것이고, Java의 경우 유니코드로 문자를 표현하기 때문에 자료 크기에 차이가 있다.

short 정수형 값이 int로 형변환 되는 이유


package ch02;

public class test {
    public static void main(String[] args) {
        short s1 = 100;
        short s2 = 200;
        int i = s1 + s2;
        System.out.println(i);
    }
}
package ch02;

public class test {
    public static void main(String[] args) {
        int s1 = 100;
        int s2 = 200;
        int i = s1 + s2;
        System.out.println(i);
    }
}

short의 연산 결과 bytecode

short의 연산 결과 bytecode

int의 연산 결과 bytecode

int의 연산 결과 bytecode

이와 같이 short를 사용할 경우 int로 변환하여 스택에 쌓게 되는 것을 확인 할 수 있다.

이는 JVM의 피연산자 스택(operand stack)이 피연산자를 4 Byte 단위로 저장하기 때문에 크기가 4 byte 보다 작은 자료형 (byte, short)의 값을 계산할 때는 4 byte로 변환하여 연산이 수행되기 때문이다.

👉  결과적으로 메모리 절약을 위해 byte나 short와 같이 작은 자료 크기를 가진 자료형을 사용한다 하더라도 피연산자가 저장되는 과정에서 4 byte로 저장될 뿐만 아니라, 형변환의 과정도 거치기 때문에 연산 과정에서도 약간의 성능 저하를 가져올 수 있다. 그렇기에 애초에 int형을 사용하여 정수를 연산하는 것이 좋을 것이다.

Reference


작은 정수형 값을 대체적으로 int에 담는 이유 | 코드잇