gpt4 book ai didi

java - 为什么 Java 将我的 long 变量称为 int?

转载 作者:行者123 更新时间:2023-12-03 04:38:42 25 4
gpt4 key购买 nike

我正在运行这个timer example ,我将 i 从 int 更改为 float,以测试我的机器潜力:-) :

    //measuring elapsed time using System.nanoTime
long startTime = System.nanoTime();
for(long i=0; i< 9100080000; i++){
Object obj = new Object();
}
long elapsedTime = System.nanoTime() - startTime;

但是java提示说:

1 error found:
File: C:\Users\Adel\Code\Javas\MeasureTimeExampleJava.java [line: 16]
Error: integer number too large: 9100080000

它说的是“整数”,意思是长整数?但9,100,080,000不是很长吗? 2^63 是 9223372036854775808 。任何提示表示感谢!

最佳答案

这不是变量,它是一个int - 而是您要与之比较的文字。你只需要:

i < 9100080000L

编译器不会使用“您正在对文字做什么”作为确定文字的类型过程的一部分,也不会根据值(与 C# 不同,其中 9100080000隐式键入为 long,因为它对于 int 来说太大) .

来自JLS section 3.10.1 :

An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).

...

The largest decimal literal of type int is 2147483648 (231).

All decimal literals from 0 to 2147483647 may appear anywhere an int literal may appear.

It is a compile-time error if a decimal literal of type int is larger than 2147483648 (231), or if the decimal literal 2147483648 appears anywhere other than as the operand of the unary minus operator (§15.15.4).

请注意,虽然 Ll 都可以工作,但为了清晰起见,我始终建议使用 L - 否则它看起来会很糟糕就像 1 取决于您的字体。

关于java - 为什么 Java 将我的 long 变量称为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com