【发布时间】:2017-07-28 10:59:44
【问题描述】:
我正在学习 Java,并且对编程完全陌生。我试图了解这段代码幕后发生的事情:
short c = 234;
byte d = (byte) c;
System.out.println(d);
输出为 -22。谁能解释一下幕后发生了什么神奇的事情?
【问题讨论】:
-
首先,您必须了解整数的二进制表示,然后,当您将值 234 截断为一个字节时,您有两种具有不同范围(和位数)的原始类型, 234 变成了负数,因为二进制表示。
-
和 type
short是 16 位,byte是 8 位。 -
字节已签名。 234=256-22。扔掉 256,因为它都不适合一个字节,而你有 -22。
标签: java type-conversion