在java中,如果程序看到的数字为000,那么java会将其解释为0还是将其解释为000?我注意到我的计算器甚至不让我输入000因此它让我想知道java是否也以这种方式计算数字
答案 0 :(得分:7)
这个问题(对我而言)表明你对Java的运作方式有一个基本的误解,可能是对数学意义上的整数的一个基本误解。
让我们从这段摘录开始:
“...... java是否将其解释为0或将其解释为000”
这对我来说意味着你认为在数学意义上“0”和“000”之间存在差异。显然,没有这种差异。两者都是整数零的文本表示。第一种形式是传统表示,第二种形式是非常规表示。
简而言之,上面引用的摘录在数学意义上没有任何意义。
现在在Java中,int
类型是数学整数最广泛使用的表示类型。并且int
类型只有一个表示为零。
简而言之,如果我们在计算/行为意义上谈论Java int
值,那么上面引用的摘录没有任何意义。
在Java源代码中,整数文字被写为十进制数字字符序列;例如0
,1
,42
等等。在此上下文中(仅限此上下文!),以零开头的整数文字被解析为八进制数;即基数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