Cof*_*fee 2 java types for-loop
我正在运行这个计时器示例,我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;
Run Code Online (Sandbox Code Playgroud)
但是java抱怨说:
1 error found:
File: C:\Users\Adel\Code\Javas\MeasureTimeExampleJava.java [line: 16]
Error: integer number too large: 9100080000
Run Code Online (Sandbox Code Playgroud)
它是说"整数",意味着一个长整数?但不会长期适应9,100,080,000吗?2 ^ 63是9223372036854775808.任何提示赞赏谢谢!
Jon*_*eet 13
这不是变量这是一个int-它的字面你与它比较.您只需要:
i < 9100080000L
Run Code Online (Sandbox Code Playgroud)
编译器不使用"你正在用文字做什么"作为确定文字类型的过程的一部分,也不会根据值改变文字的类型(与C#不同,9100080000它将隐含地键入long因为它太大了a int).
如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long; 否则它的类型为int(§4.2.1).
...
int类型的最大十进制文字是2147483648(2 31).
从0到2147483647的所有十进制文字都可能出现在int文字可能出现的任何地方.
如果int类型的十进制文字大于2147483648(2 31),或者十进制文字2147483648出现在除一元减号运算符(第15.15.4节)的操作数之外的任何地方,则为编译时错误.
请注意,同时兼具L和l工作,我总是建议使用L,而不是为了清晰-否则它看起来非常像一个1取决于你的字体.
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |