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

Edm*_*jas -1 java integer

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

Ste*_*n C 7

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

让我们从这个摘录开始:

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

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

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


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

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


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

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


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

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

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

总之,前导零将被忽略,因此"0""000"会被解析为int为零,在所列出的摘录的区别并不存在.


Lui*_*uis 5

如果你在一个字段中输入它并解析它,它被解释为 0。如果你在代码中输入它作为文字,它是一个八进制 0。在代码中使用八进制不是一个好主意,因为它非常简单混淆他们。