一.逻辑运算符(&&)(||)(!)
简称:与(and) 或(or) 非(取反)
例子:
public class 1 {
public static void main(String []args) {
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));//如果是真,则变为假,如果是假,则变为真
}
}
输出结果:
a&&b:false
a||b:true
!(a&&b):true
口诀:
&&与运算 有假为假
|| 或运算,有真为真
非运算,假为真,真为假
异或运算,同号为假,异号为真
-------某位B站大佬
短路运算
int c =9;
boolean d = (c<4)&&(c++<4); //9<4 所以第一个就错了,那后面的可以不用看,默认返回为false
System.out.println(d);
System.out.println(c);
输出结果:
false
9
二.位运算符(&) (|) (^) (~) (>>) (<<) (>>>)
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 //A B进行比较,一位一位去比 如果两个都为1 则为1 反之都为0
A|B = 0011 1101 //A B进行比较,如果两个都为0则为0,如果两个里有1,那么结果为1
A^B = 0011 0001 //A B进行比较,两位相投为0,反之为1
~B = 1111 0010 //与自己正好相反
<< 左移 *2
>> 右移 /2
*/
例子:如何最快计算2*8
public class 2 {
public static void main(String []args) {
System.out.println(2<<3);
}
}
输出结果:
16
原理解析:
二进制:
0000 0000 0
0000 0001 1
0000 0010 2 //2<<3 2左移三位
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16 //左移3位后二进制表示16
……………
//2<<3 表示2后面再*3个2 2*2*2*2=16
//4<<4 表示4后面再*4个2 4*2*2*2*2=64
三.结语
由于本人刚学习Java,基本上是把在学习过程中难理解的部分写成博客。既加深了自己的印象,也让刚学到这里不懂的同学不要踩坑,由于目前资历尚浅,本人写不出多么高深的东西,只是把自己所了解的通俗的表示出来,如果内容有什么不对,还请各位大佬指正!