当前位置: 首页 > 面试题库 >

类型不匹配:无法从long转换为int

骆英纵
2023-03-14
问题内容

我有以下几行代码

long longnum = 555L;
int intnum = 5;
intnum+=longnum;
intnum= intnum+longnum; //Type mismatch: cannot convert from long to int
System.out.println("value of intnum is: "+intnum);

我认为第3行和第4行执行相同的任务,然后为什么编译器在第4行显示错误“类型不匹配:无法从long转换为int”

请帮忙。


问题答案:

这是因为复合赋值运算符会进行隐式转换。

从JLS复合分配运算符:

形式的复合赋值表达式E1 op= E2等效于E1 = (T) ((E1) op (E2)),其中T是的类型E1,不同之处在于该表达式E1仅被评估一次。

对于二进制+运算符,则必须显式进行强制转换。进行第四项作业:

intnum = (int)(intnum+longnum);

它会工作。这就是您的复合赋值表达式的计算结果。



 类似资料:
  • 问题内容: 我正在使用ZXING库在JAVA中创建QR码生成器程序。该程序是 编译该程序时,出现类型不匹配错误, 在这条线 请帮忙!!! 问题答案: 我自己从未使用过该库,但是阅读错误消息时,我会假设您必须要以字节为单位存储字节的问题。问题将是一个字节由多个位组成,因此您不能仅通过一位表示一个字节。 将编码数据存储到ByteMatrix中,然后阅读以下内容: 使用zxing进行QR码编码和解码 完

  • 但它抱怨说: 如何同时解决这两个错误?

  • 问题内容: 我看到一个数组的最大大小只能是一个Int的最大大小。Java为什么不允许大小为long-Max的数组? 问题答案: 您必须向Java设计人员解决“为什么”问题。其他任何人都只能推测。我的猜测是,他们认为20亿个元素的数组对于任何人都应该足够了(公平地说,这应该是足够的)。

  • 问题内容: 以下代码抛出编译时异常 类型不匹配:无法从整数转换为K 我了解的是应该处理任何扩展的价值。 (注意:这只是一个测试代码,用于提出我的问题,而没有提供与我的实际情况无关的详细信息。) 问题答案: 这里的问题是这样的事实:它是一个可扩展的类型,但它是该类型的一个 未知 子类,这就是为什么编译器会引发此错误,因为它只是该子类的一个特定子类,因此它无法与任何潜在的目标类型匹配,因此会引发此错误

  • 我创建了一个AsyncTaskLoader: 在我的活动课上,我有这样的内容: