Kar*_*aal 2 java types casting
为什么我需要在这个例子中使用变量转换?
byte b = -123;
b = (byte) ~b;
Run Code Online (Sandbox Code Playgroud)
当我尝试在不进行强制转换的情况下编译它时,我得到:
NotDemo.java:17: error: possible loss of precision
Run Code Online (Sandbox Code Playgroud)
因为对于大多数 Java 运算符(~包括在内),整数操作数在应用运算符之前会被提升。于是byte晋升为int;你的代码相当于这样:
b = (byte) ~((int) b);
Run Code Online (Sandbox Code Playgroud)
因此,一般来说,分配回 abyte将丢失高位中的信息。(尽管在这种情况下这毫无意义。)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |