首页 >Java >java教程 >为什么将'L”添加到整数文字会改变乘法结果?

为什么将'L”添加到整数文字会改变乘法结果?

Linda Hamilton
Linda Hamilton原创
2024-11-07 09:53:02723浏览

Why Does Adding 'L' to an Integer Literal Change Multiplication Results?

为什么乘法运算会产生不同的结果?

在提供的代码中,结果的差异是由于存在或不存在字母“L”附加到整数文字上。要理解这种差异,深入研究所涉及的数据类型非常重要:

long oneYearWithL = 1000*60*60*24*365L;
long oneYearWithoutL = 1000*60*60*24*365;

分配给 oneYearWithL 的值是一个 long,由“L”后缀表示。与整数相比,长整型可以表示更大范围的值。在这种情况下,365 被认为是 long,并且将其与前面的整数值相乘的结果也是 long。

另一方面,oneYearWithoutL 被分配了一个整数值。整数值相乘得到一个整数。但是,此表达式的值超出了最大 32 位整数限制 (2^31 - 1)。因此,在赋值过程中,它会被截断以适合有效的整数范围,从而导致计算不正确。

为了进一步说明这一点,请考虑以下输出:

System.out.println(1000*60*60*24*365L);
System.out.println(1000*60*60*24*365);
System.out.println(Integer.MAX_VALUE);

输出:

31536000000
1471228928
2147483647

这表明当包含“L”时,结果在 long 数据类型的范围内,因此是准确的。但是当省略“L”时,结果会被截断为整数,从而导致值不正确。

要纠正此问题并获得正确的结果,oneYearWithoutL 中的乘法表达式应显式转换为长整型 (long) 或数字文字应添加“L”后缀,例如 oneYearWithoutL = 1000*60*60*24*365L。

以上是为什么将'L”添加到整数文字会改变乘法结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn