我正在做非常简单的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.
有关详细信息,请参阅"基元数据类型"解释的文字部分.