当前位置: 首页 > 面试题库 >

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

郜谦
2023-03-14
问题内容

但是,如果用前导零检查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?


问题答案:

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

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

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

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

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

Java7现在具有二进制文字。

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



 类似资料:
  • 我已经编写了一个MySQL脚本,为假设的医院记录创建一个数据库,并用数据填充它。其中一个表Department有一个名为Description的列,该列声明为varchar(200)类型。对Description I执行INSERT命令时,出现错误: 错误1406:数据对于第1行的列“描述”来说太长。 我插入的所有字符串都小于150个字符。 以下是声明:< br > 下面是插入命令: 显然,这应该

  • 问题内容: 嗨,我很难理解为什么这不起作用 莫尔斯电码只是一串数字。问题是它说Integer number太大:4545454545,但是我确定Long可以更长。 问题答案: 您需要使用或将其限定为。默认情况下,是文字,超出的范围。 建议使用大写字母以避免混淆,因为和看起来很相似 你可以做 : 要么 根据JLS 3.10.1 : 如果整数文字 以ASCII字母L或l(ell) 为后缀,则其类型为l

  • 问题内容: 我到处都读到过,当您在Java中定义介于-128到127之间的Integer时,它不会创建新对象,而是返回已经创建的对象。 除了让新手程序员比较Integer对象以查看它们是否具有相同的数字外,我看不到这样做的任何意义,但是我认为这很糟糕,因为确保他们认为可以将任何Integer对象与进行比较,并且还在教学在任何编程语言中都不好的做法:将两个“不同”对象的内容与进行比较。 这样做有其他

  • 除了让新手程序员将整数对象与进行比较,以确定它们是否是相同的数字之外,我认为这样做没有什么意义,但我认为这是不好的,因为他们肯定认为可以将任何整数与进行比较,而且在任何编程语言中都教给了一种不好的做法:用比较两个“不同”对象的内容。 为什么这样做还有其他原因吗?或者这只是在设计语言时的一个错误决定(在我看来),就像JavaScript中的可选分号一样? 编辑:我在这里看到他们解释了行为:为什么整数

  • 问题内容: 任何数据类型的上限(不包括)总是比下限的绝对值小1。 例如,an的上限为2,147,483,647,ABS(下限)= 2,147,483,648。 是否有理由总是总是比负整数多一个负整数? 编辑:更改,因为问题与数据库不直接相关 问题答案: 您提供的类型是有符号整数。让我们来看一个字节(8位)的示例。使用1字节,您可以使用组合来存储256个可能的数字。 现在,您要具有相同数量的正数和负

  • 我试图将Auth0整合到我的web应用程序用户登录中。但是,我总是得到“无效的验证码格式。”。 我注意到 Auth0Lock 提供的验证码是 ,而直接 GET 返回的验证码要大得多 。 问题是:有了Auth0,我应该如何使用校验码来换取access_token。