一尘不染

为什么09的整数“太大”?

java

但是,如果用前导零检查Integer,则会发现问题是在jdk7发行之前进行的,因此其研究工作量较小。但是在jdk7中,对整数进行了一些更改和添加。以下是有关jdk7的最新答案。

我有一个代码:

class Test{
    public static void main(String[] args){
        int x=09;
        System.out.println(x);
    }
}

编译时出现错误:整数太大:09

为什么这样做呢?

同样,如果我将代码更改为:

class Test{
    public static void main(String[] args){
        int x=012;
        System.out.println(x);
    }
}

现在输出是10

为什么给输出10而不是12?


阅读 415

收藏
2020-09-09

共1个答案

一尘不染

开头的数字0被认为是 - 9不是一个八进制数字(但(传统)0-7)。


十六进制文字开头0x,例如0xA


直到Java 6为止,二进制文件都没有文字符号,您必须使用类似

int a = Integer.parseInt("1011011", 2);

第二个参数指定所需的基数。


Java7现在具有二进制文字

在Java SE 7中,整数类型(字节,短型,整型和长型)也可以使用二进制数字系统表示。要指定二进制文字,请在数字前添加前缀0b0B

2020-09-09