Java int division令我困惑
我正在进行非常简单的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)
值0200
是八进制 (基数8)常数。 它等于128(十进制)。
从Java语言规范的3.10.1节 :
八进制数字由ASCII数字0后跟一个或多个ASCII数字0到7组成,并且可以表示正整数,零整数或负整数。
值0200是八进制,十进制为128 。
有关详细信息,请参阅“基元数据类型”解释的文字部分。
在这里观察到一个有趣的行为。
如果我做一个Integer.parseInt("0200")
,我得到200
作为o / p。
Howzzat?!