有人可以解释为什么会出现以下声明:
short value = (short) 100000000;
System.out.println(value);
给我:
-7936
知道 Java 中 short 的最大值是 32767 对吗?
最佳答案
你值一亿,我得到-7936。 1亿改100万只能得到16960。
原因是 short
的值限制在 -32768 到 +32767 之间,Java 在转换为 short
(narrowing primitive conversion, JLS 5.1.3)时只保留最低有效的 16 位.实际上这个操作:100 万模 2^16(short
中的 16 位)是 16960。
关于Java - 从 Int 到 Short 的显式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860817/