Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2147483648和2147483647,哪个是整数的最大值?_Java_Literals_Lexical - Fatal编程技术网

Java 2147483648和2147483647,哪个是整数的最大值?

Java 2147483648和2147483647,哪个是整数的最大值?,java,literals,lexical,Java,Literals,Lexical,当我阅读Java 13规范时,我看到了如下两件事: int类型的最大十进制文本为2147483648(2^31) int类型的最大正十六进制、八进制和二进制文本,每个文本表示十进制值2147483647 (2^31-1)-分别为 我不太明白字面意思是什么。但是: 对我来说,我认为当我们提到int类型的“最大十进制文字”时,我们只关注int类型可以显示什么,这意味着在词汇/词汇方面,可用的最大数字序列是2^31 这也意味着,无论从语义上讲是负整数还是正整数,我们都不能写入任何超过2^31的数字序列

当我阅读Java 13规范时,我看到了如下两件事:

  • int类型的最大十进制文本为2147483648(2^31)
  • int类型的最大正十六进制、八进制和二进制文本,每个文本表示十进制值2147483647 (2^31-1)-分别为
  • 我不太明白字面意思是什么。但是:

    对我来说,我认为当我们提到int类型的“最大十进制文字”时,我们只关注int类型可以显示什么,这意味着在词汇/词汇方面,可用的最大数字序列是2^31

    这也意味着,无论从语义上讲是负整数还是正整数,我们都不能写入任何超过2^31的数字序列(例如2^31+1)

    虽然“literal”可以有很多含义,但在这种情况下,我认为它只是指词汇术语

    那么,我的解释是正确的还是错误的?任何人都可以帮助我


    谢谢你

    你可能想知道在二进制系统中,哪一种是目前最常用的表示有符号整数的方法。也许负号丢失了…@Someprogrammerdude,谢谢你。但我的问题是,在这种情况下,“literal”这个概念只是指词汇/词汇结构(它意味着:我们可以键入什么来表示整数)?“literal”在这里只是指直接在Java源代码中指定数字的值,如
    int i=12345。它是Java语法中的一种令牌(另一种是作为标识符的
    i
    )。您可以使用字符串文字(如
    “foo”
    ),也可以使用数字文字来表示
    int
    long
    double
    。整数文本不必以十进制形式给出,您可以编写类似于
    0xFF
    或总是令人困惑的
    012
    (它是十的八进制)。第一个表示包含0的计数,因此为2147483648。第二个以十六进制表示,最大值为0x7FFFFFFF(因为最后一位用作符号:1表示负号,0表示正号),因此为2147483647