【Java】Java 语言中操作符的一些新特性

1.一元操作符

非运算

~ 是按位非运算,将操作数对应的二进制数的每一位(包括符号位)取反,即 1 变 0 , 0 变 1 。

注意:在内存中,数值都是以二进制补码形式保存的,所以在读出的时候,都会执行一步操作:补码变原码(符号位不变,剩余位取反 +1)。

代码示例:

package test;

public class Test {
    public static void main(String[] args) {
        int a = 10;

        System.out.println("十进制数 10 的二进制表示为 : " + Integer.toBinaryString(a));
        System.out.println("按位非运算后,内存中的结果为 : " + Integer.toBinaryString(~a));
        System.out.println("从内存中读出的结果为 : " + ~a);
    }
}

输出结果:

2.二元操作符

算术运算

  • 如果 / 和 % 的两个操作数都是整数类型,则除数不能为 0;
  • 若有一个或者两个都是浮点数,此时允许除数为 0 ,任何数除以 0 得到的结果都是无穷大(± Infinity),任何数对 0 求余,结果都是非数 NaN;
  • % 的操作数允许是浮点数。

位运算

操作符 描述 示例
& 按位与,两位同时为 1 才返回 1 00101010 & 00001111 = 00001010
| 按位或,两位之中有一位为 1 就返回 1 00101010 | 00001111 = 00101111
^ 按位异或,两位相同返回 0,不相同返回 1 00101010 ^ 00001111 = 00100101
<< 左移,N<<S 表示将 N 左移 S 位,空位填 0 11111000<<1 = 11110000
>>

右移,N>>S 表示将 N 右移 S 位,

若为正数,空位填 0;若为负数,空位填 1

11111000>>1 = 11111100
>>> 无符号右移,无论正数还是负数,空位都填 0 11111000>>>1 = 01111100

逻辑运算

在逻辑运算中,为了提高运行效率,Java 提供了“短路运算”功能:

  • 对于 && ,当第一个操作数为 false 时,结果必为 false,无需检查第二个操作数;
  • 对于 || ,当第一个操作数为 true 时,结果必为 true,无需检查第二个操作数。
原文地址:https://www.cnblogs.com/bjxqmy/p/13264623.html