Java 无法从long转换为int错误仅在使用简单赋值时发生
Java正在做一些我不理解的事情。如果我有Java 无法从long转换为int错误仅在使用简单赋值时发生,java,Java,Java正在做一些我不理解的事情。如果我有 int sum = 0; long num = 1234; 使用赋值运算符+=可以正常工作 sum += num % 10; 但是,使用简单赋值将导致“无法将long转换为int”错误 为什么会这样???当你做+=这是一个复合赋值,编译器内部有一些机制来计算它。其中,与第一种情况一样,编译器给出了一个错误,因为它是normal语句 JSL介绍了它如何处理复合赋值 在第一种情况下,编译器将代码翻译为 sum += (int) (num % 10);
int sum = 0;
long num = 1234;
使用赋值运算符+=可以正常工作
sum += num % 10;
但是,使用简单赋值将导致“无法将long转换为int”错误
为什么会这样???当你做+=这是一个复合赋值,编译器内部有一些机制来计算它。其中,与第一种情况一样,编译器给出了一个错误,因为它是normal语句 JSL介绍了它如何处理复合赋值 在第一种情况下,编译器将代码翻译为
sum += (int) (num % 10);
所以编译器内部有一个强制转换。因此,不会提示您出错。编译器正在那里完成您的工作:)这可能是更好(或至少更常见)的副本:。谢谢Suresh。有道理的内部演员
sum += (int) (num % 10);