java - 为什么 op-assign 运算符在 java 中不是类型安全的?

标签 java types operators language-features

我不确定问题的措辞是否清楚,但举个例子会更清楚。

我发现这在 Java 中不起作用:

int a = ...;
a = 5.0;

但这将:

int a = ...;
a += 5.0;

也就是说,= 运算符似乎是类型安全的,但 += 不是。 这是否有任何深层原因,或者这只是语言设计者必须做出的另一个武断决定。

最佳答案

原因是数学运算会进行一些隐式转换:

a += 5.0; 计算如下:

a = (int) ((double) a + 5.0);

但是,赋值需要显式转换。

(它可能是 float 而不是 double,我不记得哪个 Java 将其视为十进制文字。)

关于java - 为什么 op-assign 运算符在 java 中不是类型安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590868/

相关文章:

java - 表达式 user-> { some code } 怎么可能是一个 Observer 对象呢?

java - 如何在没有外部jar的情况下使用Java读取excel文件

java - 如何检查 JButton 是否已按下?如果 isEnable() 不起作用?

java - 实现事件驱动架构的类型更安全的方法?

ruby - Ruby 运算符可以别名吗?

haskell - 我什么时候应该使用$(并且它总是可以用括号替换)?

java - tomcat 与自己的服务器

c - 当指针未指向正确的类型时,为什么 gcc 允许取消引用。为什么还要有类型?

c# - 在 C# 中测试泛型类型的惯用方法

c - |运算符与 ||运算符(operator)