为什么 byte += 1 可以编译,而 byte = byte + 1 不能编译?

2023-11-21

如果我有一个字节变量:byte b = 0;

为什么以下工作有效:

   b++;
   b += 1; // compiles

...但这不?

   b = b + 1; // compile error

编译器首先理解为byte第二个是int ?

[EDIT]

我知道选角,但我想提请你注意b++, b += 1 and b = b + 1

我认为它们是相等的,那么为什么编译器会区分它们呢?有什么区别

  b += 1 and b = b + 1 ?

Because b += 1相当于b = (byte)(b + 1),而类型b + 1被提升为int (JLS §5.6.2 二进制数字提升),因此它的结果不能分配给byte无需显式转换。

From JLS,§15.26.2 复合赋值运算符:

E1 op= E2 形式的复合赋值表达式等效于 E1 = (T)((E1) op (E2)),其中 T 是 E1 的类型,但 E1 仅计算一次。

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

为什么 byte += 1 可以编译,而 byte = byte + 1 不能编译? 的相关文章

  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 检查发送到网页的请求数

    我正在编写一个 Java 多线程应用程序 它可以访问不同 Web 服务器的数百万个 有时甚至数十亿个 URL 这个想法是检查这些 URL 是否给出有效的 200OK 响应或 404 其他代码 我如何知道我的程序是否不会在他们的服务器上造成高
  • Spring boot 2.0.5.RELEASE和mongo 4.0连接问题

    我正在关注使用 MongoDB 访问数据教程春季网站 https spring io guides gs accessing data mongodb 我将 Mongo DB 服务器版本 4 安装为服务当我使用客户端连接到它时 它的身份验证
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • Java“空白最终字段可能尚未初始化”方法中抛出异常

    我有一些代码 例如 final int var1 if isSomethingTrue var1 123 else throwErrorMethod int var2 var1 throwErrorMethod 的定义如下 private
  • Java Spark DataFrameReader java.lang.NegativeArraySizeException

    学习 Spark for java 并尝试阅读 csv文件为DataFrame使用DataFrameReader 甚至不能得到一个超级简单的 csv文件工作 因为我不断收到异常java lang NegativeArraySizeExcep
  • 全静态方法和应用单例模式有什么区别?

    我正在创建一个数据库来存储有关我的网站用户的信息 我正在使用 stuts2 因此使用 Java EE 技术 对于数据库 我将创建一个 DBManager 我应该在这里应用单例模式还是将其所有方法设为静态 我将使用这个 DBManager 进
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • AffineTransform.rotate() - 如何同时缩放、旋转和缩放?

    我有以下代码 它可以完成我想要绘制一个上面有一些棋子的棋盘的 第一部分 Image pieceImage getImage currentPiece int pieceHeight pieceImage getHeight null dou
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 在 Java 中创建带注释的对象时收到通知

    Intent 我有一个自定义 Java 注释 DynamicField public class RESTEndpointInvoker DynamicField key httpTimeout private long httpTimeo
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap
  • Lucene/Hibernate 搜索锁定异常

    我使用 Hibernate Search 在 Web 应用程序上索引和全文搜索项目 没有问题 来自我的 pom xml
  • 如何列出Resources文件夹中的所有文件(java/scala)

    我正在编写一个函数 需要访问资源中的文件夹 并循环遍历所有文件名 如果这些文件符合条件 则加载这些文件 new File getClass getResource images sprites getPath listFiles 返回空指针
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 使用正则表达式匹配阿拉伯文文本

    我试图使用正则表达式仅匹配阿拉伯语文本 但出现异常 这是我的代码 txt matches P Arabic 这是例外情况 线程 main 中的异常 java util regex PatternSyntaxException 索引 9 附近
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • 彩色输出打破了 readline 的换行

    我正在使用 Ruby 中的 readline 对一些输出进行着色 但我没有运气让换行正常工作 例如 e 01 32mThis prompt is green and bold e 00m gt 期望的结果是 This prompt is g
  • 使用 csv 和 quantmod 加载多个符号

    我正在尝试使用 csv 文件加载多个符号 而不是从雅虎下载 原始代码运行良好并且使用 load packages quantmod tickers spl TLT IWM GLD data lt new env getSymbols tic
  • MySQL - 从多个具有相同结构但不同数据的表中选择数据

    好吧 这是我的困境 我有一个数据库 其中设置了大约 5 个表 所有表都具有完全相同的数据结构 以这种方式分离数据是为了本地化目的 并划分总共约 450 万条记录 大多数时候只需要一张桌子 一切都很好 但是 有时需要来自 2 个或更多表的数据
  • Node.js NODE_PATH 环境变量

    在开发过程中我曾经WebStorm node path 环境变量 我在项目设置的启动中设置了一个变量 现在我想尝试在服务器上运行该项目 但不知道如何在那里设置这个变量 帮忙解决问题 假设它是 UNIX 或 Mac OS X 服务器 请使用e
  • 无法从 Moto 360 读取心率传感器 - Android Wear

    有人成功读取 Moto 360 的心率传感器吗 mSensorManager SensorManager getSystemService SENSOR SERVICE mHeartRateSensor mSensorManager get
  • NSNotificationCenter 和安全多线程

    鉴于即使方法调用正在进行中 对象也可能被释放 link 对象注册并接收将在与其预期释放的线程不同的线程上传递的通知是否安全 作为参考 文档指出 在多线程应用程序中 通知始终在发布通知的线程中传递 该线程可能与观察者注册自身的线程不同 同样重
  • 空间局部性与时间局部性

    我理解这些术语的定义 但我无法将它们的概念应用到代码中 在练习中 我们需要描述以下代码是空间代码还是时间代码 for int i 0 i lt 10 i printf some array i 我觉得这是空间局部性 因为当访问数组的一个索引
  • Spring Boot 2 禁用具有多个数据源的自动提交 Hikari

    我正在尝试关闭 Hikari 上具有多个数据源的自动提交 但我没有任何运气 我正在使用 Spring Boot 2 2 0 3 RELEASE 这是我的配置 应用程序属性 spring datasource primary driver c
  • 如何在 Laravel 中过滤多对多结构

    我有多对多的用户和角色结构 users id name roles id name 角色 用户 user id role id Model User php public function roles return this gt belo
  • jq 是否已安装并在 PATH 上可用?

    我正在尝试读取 gitlab CI 中的 yaml 文件 我安装了jq 1 0 2 and yq 2 10 1 using pip在我的 CI 工作中 我使用 python 3 7 图像 当我尝试读取 yaml 文件时 出现错误 yq Er
  • 如何为 S3 对象创建 java OutputStream 并向其写入值?

    使用 AmazonS3 类中的方法将内容添加到 S3 文件的现有方法有 通过带有输入流的 putObject 创建包含内容的本地文件并将其上传到 S3 有没有办法为现有的 S3 对象创建一个 OutputStream 可以将列表中的值写入其
  • 当 SCREEN_ON 接收器被触发时,如何禁用键盘防护并向用户显示活动?

    当 screen on 激活广播接收器时 如何禁用键盘保护 以便当它发生时用户可以看到我在其后面启动的活动 活动已经开始 我一直在尝试从屏幕关闭触发的广播接收器中执行以下代码 KeyguardManager myKeyGuard Keygu
  • .NET 正则表达式中的 \d 与 [0-9] [重复]

    这个问题在这里已经有答案了 我经常看到 0 9 用于 Stack Overflow 上的 NET 正则表达式答案 而不是 d 我问过为什么 答案往往是 d匹配的不仅仅是 0 9 那么它还匹配什么呢 这张表说它匹配十进制数字 那么呢 p Nd
  • Maven 安装插件:参数文件丢失或无效

    我有一个本地 jar 我想在我的项目中使用它 有很多方法可以做到这一点 只需手动安装到本地存储库中 使用父 pom 中的脚本进行安装 使用系统范围 使用本地存储库声明 我决定使用 Maven Install 插件将 jar 安装到存储库中
  • gcc 编译标志

    谁能解释一下为什么我们在 gcc 中使用 m 标志 我运行 man gcc 命令结果很不清楚 任何人都可以解释一下这个标志在编译中的作用吗 如何使用 m 标记其正确的语法 我需要它 因为我正在通过 make 命令运行自动生成的 makefi
  • Web API ModelBinders - 如何以不同方式绑定对象的一个​​属性

    我有以下操作签名 ValidateInput false public HttpResponseMessage PostParam Param param Param 看起来像这样 public class Param public int
  • 非静态方法 PEAR::isError() 不应静态调用

    从 RHEL 5x 升级到 CentOS 6x 后 我开始在 httpd 日志中看到以下错误 PHP 严格标准 非静态方法 PEAR isError 不应该 在 web sites blah somescript php 第 33 行静态调
  • 为什么 strncpy 被标记为不安全?

    我收到警告 warning C4996 strncpy This function or variable may be unsafe Consider using strncpy s instead To disable deprecat
  • 如何有选择地合并或选择 Git 中另一个分支的更改?

    我正在一个新项目上使用 Git 该项目有两个并行的 但目前是实验性的 开发分支 master 导入现有代码库以及我通常确定的一些修改 exp1 实验分支 1 exp2 实验分支 2 exp1 and exp2代表了两种截然不同的架构方法 在
  • 为什么 byte += 1 可以编译,而 byte = byte + 1 不能编译?

    如果我有一个字节变量 byte b 0 为什么以下工作有效 b b 1 compiles 但这不 b b 1 compile error 编译器首先理解为byte第二个是int EDIT 我知道选角 但我想提请你注意b b 1 and b