Java语法细节(2)

时间:2023-03-08 16:36:23

1、逻辑运算符 &和&&,|和||的区别

&&:和&的结果是一样的,但运算过程有区别

&&:只要左边结果为假,就不再执行右边的,结果为假

& :无论左边的运算结果是什么,右边的都参与运算

||:和|的结果是一样的,但运算过程有区别

||:只要左边结果为真,就不再执行右边的,结果为真

| :无论左边的运算结果为什么,右边的都参与运算

2、逻辑运算符^(异或)的用法

^ : 符号两边的结果如果相同,则结果为假。符号两边的结果如果不同,则结果为真。

异或运算特点:一个数据对同一个数异或两次,结果仍是原本的数。

需求:实现两个整数的互换,不能引入第三个变量。

int a = 10, b = 2;
a = a^b; //a = 10^2
b = a^b; //b = (10^2)^2=10
a = a^b; //a = (10^2)^10=2

3、<<、>>和>>>运算符的使用

用<<和>>运算符可以实现对2的倍数运算的优化。向左移几位就代表着乘以2的几次方,向右移几位代表着对2的几次方取余。

需求:用最有效率的方式算出2乘以8等于几?

2<<3;

(1)在使用<<运算符时,数据向高位移动,低位补0,高位被移出数据有效位的舍弃。此处注意符号位一起移动

(2)在使用>>运算符时,数据向低位移动,高位用符号位补位。

(3)在使用>>>(无符号右移)运算符时,数据向低位移动,高位用0补位。

注意:负数的二进制是对应正数的二进制取反加1。