java如何解释像000这样的数字?

时间:2012-01-21 03:05:26

标签: java integer

在java中,如果程序看到的数字为000,那么java会将其解释为0还是将其解释为000?我注意到我的计算器甚至不让我输入000因此它让我想知道java是否也以这种方式计算数字

4 个答案:

答案 0 :(得分:7)

这个问题(对我而言)表明你对Java的运作方式有一个基本的误解,可能是对数学意义上的整数的一个基本误解。

让我们从这段摘录开始:

  

“...... java是否将其解释为0或将其解释为000”

这对我来说意味着你认为在数学意义上“0”和“000”之间存在差异。显然,没有这种差异。两者都是整数零的文本表示。第一种形式是传统表示,第二种形式是非常规表示。

简而言之,上面引用的摘录在数学意义上没有任何意义。


现在在Java中,int类型是数学整数最广泛使用的表示类型。并且int类型只有一个表示为零。

简而言之,如果我们在计算/行为意义上谈论Java int值,那么上面引用的摘录没有任何意义。


在Java源代码中,整数文字被写为十进制数字字符序列;例如0142等等。在此上下文中(仅限此上下文!),以零开头的整数文字被解析为八进制数;即基数8.因此在Java源012实际上意味着数字10。但是,000被解释为八进制数仍然为零。

简而言之,如果我们在谈论Java源代码中的文字,上面引用的摘录没有任何意义。


最后,我们需要处理Java应用程序必须将用户输入的数字序列转换为Java int值的情况。在此上下文中,转换通常通过调用Integer.parseInt(...)或类似的东西来完成。此方法有两个不同的版本:

  • Integer.parseInt(string)期望字符串是十进制数字序列(带有可选符号)。这将为int"0"返回"000"零值。任何前导0个字符都会被忽略。

  • Integer.parseInt(string, radix)期望字符串是一个数字序列(带有可选符号),其基数由radix参数给出。再一次,前导零被忽略。

简而言之,前导零被忽略,因此"0""000"将被解析为int零,并且引用的摘录中的区别不存在。

答案 1 :(得分:4)

如果在字段中输入并解析它,则将其解释为0.如果在代码中将其作为文字输入,则为八进制0.在代码中使用octals不是一个好主意,因为它是非常容易混淆他们。

答案 2 :(得分:2)

在Java中,任何以0开头的文字整数都被解释为八进制。所以这是八进制0,当然是dec 0。

答案 3 :(得分:1)

Java将解释为0,尽管它是八进制评估。 试试

int x=000; //result will be 0

然后

int x=012; // result will be 10