Java int 除法让我困惑
我正在做非常简单的 int 除法,但得到了奇怪的结果。
此代码按预期打印 2
:
public static void main(String[] args) {
int i = 200;
int hundNum = i / 100;
System.out.println(hundNum);
}
此代码按非预期打印 1
:
public static void main(String[] args) {
int i = 0200;
int hundNum = i / 100;
System.out.println(hundNum);
}
这是怎么回事?
(Windows XP Pro,在 Eclipse 3.4.1 中运行的 Java 1.6)
I am doing very simple int division and I am getting odd results.
This code prints 2
as expected:
public static void main(String[] args) {
int i = 200;
int hundNum = i / 100;
System.out.println(hundNum);
}
This code prints 1
as not expected:
public static void main(String[] args) {
int i = 0200;
int hundNum = i / 100;
System.out.println(hundNum);
}
What is going on here?
(Windows XP Pro, Java 1.6 running in Eclipse 3.4.1)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
值
0200
是一个八进制(基数为 8)常量。它等于 128(十进制)。来自 Java 语言规范的第 3.10.1 节:
The value
0200
is an octal (base 8) constant. It is equal to 128 (decimal).From Section 3.10.1 of the Java Language Specification:
值 0200 是八进制,十进制为 128。
有关详细信息,请参阅原始数据类型<的文字部分/a> 解释。
The value 0200 is an octal, which is 128 in decimal.
For further information, see the literals section of the Primitive Data Types explanation.
在这里观察到一个有趣的行为。
如果我执行
Integer.parseInt("0200")
,我会得到200
作为 o/p。怎么样?!
Observed an interesting behavior here.
If I do an
Integer.parseInt("0200")
, I get200
as o/p.Howzzat ?!