以下列方式给出值时出错

时间:2013-07-16 11:39:44

标签: java short

我在以下行中遇到错误“类型不匹配:无法从int转换为短”

short a;
a=09;

但不是

a=9;

为什么会这样。

2 个答案:

答案 0 :(得分:4)

在数字前使用 0 表示它是八进制。你只能在 00到07 中使用它,所以你不能进行转换(它也不适用于int,因为它超出了范围,即使看起来它试图进行隐式转换)。

09 从计算上来说,只是一个不存在的数字。

答案 1 :(得分:2)

要具体回答你的问题,那就是编译器的特殊性。一个不同的编译器(可能只是一个不同的版本)会给你一个不那么混乱的错误,例如整数过大:09 而不是在演员表上绊倒,在你的情况下甚至不可能,因为号码无效。

你的代码中的问题是你试图用八进制表示法定义一个整数(或你的情况下的一个短整数),因为你正在以前导0开始数字。八进制表示数字只能是在0到7之间。因此,不存在写为09的八进制数。

所以这两件事情让你的编译器感到困惑。