为什么我需要在这个例子中使用变量转换?
byte b = -123;
b = (byte) ~b;
当我尝试编译它而不进行强制转换时,我得到:
NotDemo.java:17: error: possible loss of precision
最佳答案
因为对于大多数 Java 运算符(包括 ~
),整数操作数为 promoted在应用运算符之前。所以byte
提升为int
;您的代码相当于:
b = (byte) ~((int) b);
因此,一般来说,分配回字节
将会丢失高位中的信息。 (尽管在这种情况下它毫无意义。)
关于java - 使用 NOT 运算符时的字节转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934314/