0
OCA 시험을 위해 공부하면서 "왜이게 받아 들일 수 있니?"짧은 및 바이트 프리미티브 및 컴파일을 사용한 산술
컴파일러에서는 허용되지 않습니다.
short shortX = 1;
short shortY = 1;
short shortZ = shortX + shortY; //Compiler error
비록 이것입니다.
short shortZ = (short)1 + (short)1;
나에게는 둘 다 똑같은 것처럼 보입니다. 제 이론은 shortX와 shortY는 짧은 변수에 저장된 int로 정의 된 리터럴입니다. 반면 캐스팅은 리터럴이 짧고 허용 할 수 있도록 컴파일러에 직접 알려줍니다.
방정식 결과가 캐스팅되었지만 리터럴이 아니라는 것을 이해할 수 있습니다. 누군가 내 내면의 호기심을 진정시키기위한 명확한 설명이 있습니까?
[이 답변보기] (http://stackoverflow.com/a/2294977) : "짧은 또는 리터럴 바이트가 필요한 경우 캐스팅해야합니다." – beatngu13
완벽한, 감사합니다! –
Note :'shortX'와'shortY'를'final'로 만들면 컴파일러의 상수 인라이닝이'short' 타입에 맞는 값을 결정할 수 있기 때문에 컴파일됩니다. –