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

我有以下几行代码

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);

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

以上是 类型不匹配:无法从long转换为int 的全部内容, 来源链接: utcz.com/qa/418439.html

回到顶部