逻辑运算
package operator;
//逻辑运算符
public class Project4 {
public static void main(String[] args) {
//与 (and)&& 或 (or)|| 非 (取反)!
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果为true
System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果为true
System.out.println("!a&&b:"+!(a&&b));//逻辑非运算:运算结果如果是真,则变为假,如果是假则变为真。
//短路运算
int c= 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
/*与运算要两个都是对的如果第一个就是错的话,那么后面程序就不会被执行
所以在输出c的时候得到的是5,因为c++没有被执行
下面的前后都执行了所以最后f输出为6
*/
int f = 5;
boolean x = (f++<4)&&(f<4);
System.out.println(x);
System.out.println(f);
}
}
位运算
package operator;
public class project5 {
public static void main(String[] args) {
/*
位运算
A= 0011 1100
B = 0000 1101
----------------------
A&B = 0000 1100 与运算,只有都是1结果得到的才为1
A|B = 0011 1101 或运算,只要有1结果就是1
A^B = 0011 0001 非运算, 00 11 得到的都是0 01得到的才是1
~B = 1111 0010 反运算, 将原来的数全部颠倒
其实把1看成真 把0看成假就好理解了
与运算中真真才得真
或运算中有真就得真
不过在非运算里假假得假 真真得假 假真得真
<<向左一位
>>向右一位
0000 0000 0 0000 0000 这8个0对应的数字位数,1代表有这个数
0000 0001 1 128 64 32 16 8 4 2 1
0000 0010 2 <<代表向左移动一位 如00000 0001向左一位就是0000 0010就得到2了
0000 0011 3 >>代表向右移动一位 如 0000 0010向右一位就是0000 0001就得到1了
0000 0100 4 <<左移就相当于把这个数字乘以2
0000 1000 8 >>右移就相当于把这个数字除以2
0001 0000 16
位运算和底层运算逻辑打交道,所以位运算很快
*/
}
}