Java int += double 语法惊喜[重复]

2023-11-22

我遇到了以下令人惊讶的一行:

int x = 7;
x += 0.5;

显然是合法的语法!加法之后,x 仍然是 7,因此 double 被转换为 int 并向下舍入为 0,但这是在代码中没有任何显式转换的情况下完成的。还有人对此感到惊讶吗?这里的理由是什么?

编辑以澄清我的问题:任何人都可以给出这个决定的充分理由吗?在我看来,在其他地方都要求显式转换是一个可怕的决定,但在语言中却有一个地方可以让你默默地丢弃数据。我错过了什么吗?


x += 0.5;

相当于:

x = (int) (x + 0.5)

一般来说:

x += y相当于x = (type of x) (x + y)


See 15.26.2。复合赋值运算符

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java int += double 语法惊喜[重复] 的相关文章

随机推荐

  • Laravel 如何制作自定义验证器?

    我需要制作自己的扩展验证器Illuminate Validation Validator 我读过这里的答案中给出的示例 Laravel 4 中的自定义验证 但问题是它没有清楚地展示如何使用自定义验证器 它不会显式调用自定义验证器 您能给我一
  • 如何通过DDP(WebSocket)协议访问meteor.com上托管的应用程序?

    我有一个Meteor app A和另一个应用程序B 不使用 Meteor 而是与应用程序进行一些数据交换A 当我启动时它工作正常A在我的本地网络中的一台计算机上 但是当我将其部署在meteor com 托管上时 它却没有 服务器没有回复 B
  • 如何调用 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer?

    我正在想办法如何称呼这个AVFoundationSwift 中的函数 我花了很多时间摆弄声明和语法 才走到这一步 编译器大部分都很高兴 但我还有最后一个难题 public func captureOutput captureOutput A
  • 我可以通过placement-new覆盖const对象吗?

    基本生活 8告诉我们 我们可以在一个对象的生命周期结束后 使用它占用的存储空间来创建一个新的对象 并使用它的原始名称来引用它 除非 原始对象的类型不是 const 限定的 并且 如果是类类型 则不包含任何类型为 const 限定的非静态数据
  • 如何将文件写入相机所在的DCIM目录中?

    假设我正在编写一个替代的相机应用程序 并希望将图像写入与相机完全相同的位置 并以与相机完全相同的名称命名它们 我将如何实现这个目标 如何知道相机文件的位置 如何知道当前的命名约定 如何获得该目录的权限 任何答案将不胜感激 好吧 假设它不是真
  • 使用Meson时如何指定库路径?

    我正在尝试使用 Meson 构建一个 C 项目 问题是 我下面有一些库 opt conda但不知道运行时如何链接项目meson build 看来只能通过搜索了 usr lib目录 据我了解 meson uses cmake and pkg
  • 为什么这个 django-rest-swagger API 文档无法正常显示/工作?

    我构建了一个 Django API 当通过 POST 给出电子邮件地址时 它将用一个布尔值进行响应 指示天气或该电子邮件地址是否已存在于我的数据库中 class isEmailTaken views APIView permission c
  • Rails 预加载和 where 子句

    我渴望加载模型对象及其关联 user User includes posts find 1 但在代码中的某些点我想做这样的事情 user posts where topic gt x 但这只是再次重新运行查询 所以我想我会这样做 user
  • MercurialEclipse 插件的官方/活动主页是什么?

    我找不到 MercurialEclipse 插件的官方主页 有吗 而且我有一种奇怪的感觉 实际上有多个同名的项目 以下是我发现的一些项目 http code google com a eclipselabs org p mercuriale
  • Mathjax 无法在基于 Ajax 的网页中工作

    我正在使用 Mathjax 在 PHP Ajax 完成的 Web 应用程序中显示方程 首次加载页面时 方程会正确呈现 在同一页面中 当用户单击按钮时 ajax 代码会从数据库中获取一些数据并将其显示在同一页面上 但是 方程无法正确显示 相反
  • 使用 OpenJDK 12 通过 Mockito 启动 JUnit 时如何摆脱“无法初始化插件:接口 org.mockito.plugins.MockMaker”

    我一直在将一个项目从 Java 8 迁移到 Java 12 除了单元测试之外 一切都很顺利 当我使用 Maven 编译和启动测试时 许多测试失败并显示以下消息 java lang IllegalStateException Could no
  • 从 Inherited 接口调用 Method 时,传递动态参数会引发 RuntimeBinderException

    经过一些重构后遇到了一个有趣的运行时问题 并确定了以下情况 当将属性从动态对象传递到从父接口继承的接口上的方法时 运行时绑定器无法找到该方法 这是一个演示失败和成功的测试 直接在父接口类型上调用方法时 using System Dynami
  • Selenium 2.0 WebDriver 高级交互 DoubleClick 帮助 (c#)

    因此 在我的硒回归测试中 我一直在尝试双击日历来创建新的预约 我尝试使用 doubleClick 高级用户交互库中的方法 但有一个问题 两次单击速度不够快 不够近 无法触发实际的双击 有人在测试中找到解决这个问题的方法吗 这段代码对我有用
  • 即使手机处于睡眠状态也能保持服务运行吗?

    我的应用程序中有一个服务 设计为每 10 分钟运行一次 它主要检查我们的服务器 看看一切是否正常运行 并通知用户任何问题 我创建了这个应用程序供我们公司内部使用 我的同事在长周末使用了该应用程序 并注意到设备进入睡眠状态时没有执行任何检查
  • 获取资源的大小

    我在用着getClass getResourceAsStream path 从捆绑资源中读取 在读取整个流之前如何知道文件大小 我无法访问它们getClass getResource path toURI 当它被打包时 这样就不起作用了 我
  • 如何使用Python在WebDriver中发送多个密钥?

    如何在WebDriver中制作Python代码以按键盘 或按键 上的Command Shift H按钮 Update info Pushing command to appium work queue au mainApp getTreeF
  • 在另一个目录中建立链接时符号链接不起作用?

    哇 我以前从未真正使用过符号链接 但这真的令人难以置信 bash 3 2 echo weird gt original txt bash 3 2 mkdir originals bash 3 2 mv original txt origin
  • HTTP RANGE 标头是否可与 Azure Blob 存储共享访问签名一起使用?

    我使用 Azure Blob 存储来存储媒体文件 并使用共享访问签名提供对这些文件的访问 在这方面一切进展顺利 但是 我有一个客户端应用程序需要 恢复 对这些文件的访问 并使用 HTTP RANGE 标头来执行此操作 当它发出这样的请求时
  • 无法将 WPF ListView 绑定到 ObservableCollection

    我第一次使用 WPF 特别是使用 ListView 我想将其绑定到 ObservableCollection 这是代码隐藏页面上的一个属性 现在我只是想了解一下事情是如何运作的 所以我尝试保持简单 不幸的是 我不太明白我的做法错在哪里 我的
  • Java int += double 语法惊喜[重复]

    这个问题在这里已经有答案了 我遇到了以下令人惊讶的一行 int x 7 x 0 5 显然是合法的语法 加法之后 x 仍然是 7 因此 double 被转换为 int 并向下舍入为 0 但这是在代码中没有任何显式转换的情况下完成的 还有人对此