Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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数字”中的任何显著差异;铸造;_Java - Fatal编程技术网

“Java数字”中的任何显著差异;铸造;

“Java数字”中的任何显著差异;铸造;,java,Java,铸造文字数字与在文字数字上使用后缀有什么显著区别 为了说明 doSomethingWithLong(2L); //vs... doSomethingWithLong((long) 2); 澄清一下:假设代码仍然使用所使用的文本值进行编译。在第一个示例中,您使用的是longliteral。在第二个示例中,您正在将整数文本转换为长 如果值太大而无法存储在int类型中,则它们的行为将不同。例如,如果值大于整数.MAX\u值,或小于整数.MIN\u值,则第二个代码不会编译 在使用整数文本执行算术运算时

铸造文字数字与在文字数字上使用后缀有什么显著区别

为了说明

doSomethingWithLong(2L); //vs...
doSomethingWithLong((long) 2);

澄清一下:假设代码仍然使用所使用的文本值进行编译。

在第一个示例中,您使用的是
long
literal。在第二个示例中,您正在将
整数
文本转换为

如果值太大而无法存储在
int
类型中,则它们的行为将不同。例如,如果值大于
整数.MAX\u值
,或小于
整数.MIN\u值
,则第二个代码不会编译

在使用整数文本执行算术运算时,也应该非常小心。当算术运算的结果超出范围时,可能会得到意外的结果。例如:

System.out.println(123456 * 123456); // Will print `-1938485248`

相关帖子:


让我们假设代码仍然使用所使用的文本值进行编译

假设您有代码编译的文本,字节码没有区别。上述两个调用生成的字节码与您在下面看到的相同。您可以使用
javap-cyourclass
命令查看字节码:

0: ldc2_w        #2                  // long 2l
3: invokestatic  #4                  // Method doSomethingWithLong:(J)V
6: ldc2_w        #2                  // long 2l
9: invokestatic  #4                  // Method doSomethingWithLong:(J)V

您将无法编译

 doSomethingWithLong((long) 222222222222222222); 
 // The literal 222222222222222222 of type int is out of range 
因为
2222222
不适合
int

您可以阅读中的基本数据类型

int数据类型是一个32位带符号2的补码整数。它有 最小值为-2147483648,最大值为2147483647 (包括在内)

长数据类型是一个64位有符号2的补码整数。它有 最小值为-9223372036854775808,最大值为 9223372036854775807(含)

让我们假设代码仍然使用所使用的文本值进行编译


它们是等价的,请参阅Rohit的字节码答案。

除了某些未编译的内容外,如果不小心,可能会得到意外的结果- 5d/2d返回值2.5
5/2返回2

有时在发布问题之前,您需要做一些测试。关于您的澄清:产生的字节码没有区别。