Java中具有不同数据类型的复合减法[重复]
Posted
技术标签:
【中文标题】Java中具有不同数据类型的复合减法[重复]【英文标题】:compound subtraction in Java with different datatypes [duplicate] 【发布时间】:2021-10-07 00:08:15 【问题描述】:我对 Java 中的数据类型转换感到困惑。为什么这段代码有效:
long q = 5;
long r = 4;
int p = 0;
p -= q * r;
而下面的代码给出了编译错误?
类型不匹配:无法从 long 转换为 int
long q = 5;
long r = 4;
int p = 0;
p = p - q*r;
与显式减法相比,Java 中如何处理显式减法?
【问题讨论】:
【参考方案1】:p -= q * r
成功有两个原因:
首先,q * r
是一个编译时间常数,已知在 int
范围内。
其次,a += b
不与a = a + b
相同,与a = a + (int)b
相同。
结合这两个事实,编译器知道它可以安全地做什么。
【讨论】:
两个原因?你设法让它们都错了:1)q * r
不是编译时间常数,因为它们不是final
。 --- 2) a += b
与a = (int) (a + b)
相同。不是a = a + (int)b
。 --- 此外,这个问题在别处已经有很多答案了,所以不应该在这里回答。以上是关于Java中具有不同数据类型的复合减法[重复]的主要内容,如果未能解决你的问题,请参考以下文章