我正在进行非常简单的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)
答案 0 :(得分:22)
值0200
是八进制(基数为8)常量。它等于128(十进制)。
来自Section 3.10.1 of the Java Language Specification:
八进制数字由ASCII数字0后跟一个或多个ASCII数字0到7组成,可以表示正整数,零或负整数。
答案 1 :(得分:6)
值0200是八进制,十进制 128 。
有关详细信息,请参阅Primitive Data Types解释的文字部分。
答案 2 :(得分:1)
在这里观察到一个有趣的行为。
如果我执行了Integer.parseInt("0200")
,我会将200
作为o / p。
Howzzat?!