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