具有短和字节基元和编译的算术

时间:2016-09-01 07:52:22

标签: java jvm

虽然我一直在为我的OCA考试而学习,但我遇到了一些让我思考的东西#34;为什么这是可以接受的?"。

这对编译器来说是不可接受的。

short shortX = 1;
short shortY = 1;
short shortZ = shortX + shortY; //Compiler error

虽然这是。

short shortZ = (short)1 + (short)1;
对我来说,它们看起来完全一样。我的理论是shortX和shortY是文字定义为一个只存储在一个短变量中的int,而cast直接告诉编译器文字是一个短的,使它可以接受。

我会理解方程式结果是否被铸造,但它不是,只是文字是。有没有人有一些澄清来缓和我内心的好奇心?

1 个答案:

答案 0 :(得分:0)

这里任何变量的直接算术求和都会产生整数,因为编译器不会100%确定它适合短尺寸,因为变量赋值将在运行时完成,所以它不允许你分配给你的短变量所以你的第一个案例会给出编译错误,而在你的第二个案例中你直接使用1就像固定一样,肯定有短的范围,所以即使你没有投射它也能正常工作