gpt4 book ai didi

java - int 可以增加一个 double 值

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:32 25 4
gpt4 key购买 nike

这段代码似乎可以在 Java 中运行,违反了我认为我对该语言的所有了解:

int x = 0;
x += 7.4;

x 现在的值为 7。当然,不能只写 int x = 7.4,所以这种行为对我来说似乎很奇怪且不一致。

为什么 Java 的开发者会选择这样的行为?

我的被标记为重复的问题实际上是在回答“发生了什么”部分,但不是我的主要问题:基本原理是什么。

最佳答案

数字运算符进行各种类型的转换,在本例中通过四舍五入将 7.4 double 转换为 7 int。

你这里有一个 Compound Assignment Operators

所以真正执行的是

x= (int)(x + 7.4)

因为 x 是一个 int 并且 7.4 x 被转换为 double 而不是 Binary Numeric Promotion所以你得到 7.4 作为中间结果。

然后转换结果( double ),因此受制于 Narrowing Primitive Conversion将它四舍五入为 7

关于新问题:为什么要这样做?

好吧,隐式转换是好事还是坏事,你可以争论很久。 Java 在基元、它们的盒装类型和字符串之间进行了一些转换,走了某种中间道路。

+= 运算符具有相当简单和直接的语义。如果您认为它是一个 increment by 运算符,而不是它的真实面目:运算符和赋值组合的简写,它真的只会看起来很奇怪。

关于java - int 可以增加一个 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com