Jon*_*ley 17 java type-conversion
class Main {
public static void main (String[] args){
long value = 1024 * 1024 * 1024 * 80;
System.out.println(Long.MAX_VALUE);
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
9223372036854775807 0
这是正确的long value = 1024 * 1024 * 1024 * 80L;!
Eri*_*ich 39
在Java中,所有数学都是以处理所有当前值所需的最大数据类型完成的.因此,如果你有int*int,它将始终将数学作为整数,但int*long作为long来完成.
在这种情况下,1024*1024*1024*80作为Int完成,它溢出int.
"L"当然强制其中一个操作数为Int-64(long),因此所有数学运算都将值存储为Long,因此不会发生溢出.
整数文字是ints。在int小号溢出。使用L后缀。
long value = 1024L * 1024L * 1024L * 80L;
Run Code Online (Sandbox Code Playgroud)
如果数据来自变量,则可以强制转换或预先分配给long。
long value = (long)a * (long)b;
long aL = a;
long bL = b;
long value = aL*bL
Run Code Online (Sandbox Code Playgroud)
严格来说,您可以用更少的钱摆脱困境,但是最好还是要弄清楚。
也不l能将小写字母作为后缀混为一谈1。
| 归档时间: |
|
| 查看次数: |
21468 次 |
| 最近记录: |