[Java] Implicit Narrowing Conversion에 관하여
2023. 2. 4.
자바에서는 컴파일러가 기본적으로 정수 리터럴을 int 타입으로 간주한다. 그런데, 이와 관련해서 갑자기 자바의 근원적인 부분에서 궁금증이 떠올랐다. 예를 들어 byte a = 1; 위의 코드에서 컴파일러가 1을 int 타입으로 간주하면, byte 타입이 int 타입보다 허용 범위가 작기 때문에 자동 타입 변환(Promotion)이 되지 않을 텐데도 불구하고, 어떻게 int 타입인 1이 컴파일 에러를 일으키지 않고 byte 타입 변수에 대입되는지에 대한 의문이 들었다. 일반적으로 흔히 배우는 '자동 타입 변환(Promotion)'과 '명시적 타입 변환(Casting)'으로는 위의 의문이 설명되지 않았다. 분명히 숨겨진 원리가 있을 것이라고 확신하며, 다양한 곳에서 이에 대해 질문하고 찾아보았다. 하지만 마..