1. 与(and) 或(or) 非(取反)
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));//如果是真,则变为假,如果为假,则变为真
2. 短路运算
//短路运算 int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d); //结果false System.out.println(c); //结果5(如果程序没有短路,c++这行代码执行完后,c为7)
由于(c<4)为假,在与(and)运算中进行短路运算,结果直接输出为false。
因此(c++<4)没有执行,c为5
3. 位运算
public static void main(String[] args){ /* A = 0011 1100 B = 0000 1101 &(与运算)对应位都为1时,运算后位数才是1否则为0 A&B = 0000 1100 |(或运算)对应位都为0时,运算后才是0,否则为1 A|B = 0011 1101 ^(异或运算)对应位相同则位0,否则为1 A^B = 0011 0001 ~(取反)对应位完全相反 ~B = 1111 0010 ~A = 1100 0011 <<左移运算和 >>右移运算 举例 2*8 = 16 即 2*2*2*2 则<<左移为在原有基础上*2 而>>右移为原有基础上/2 */ }
位运算主要和二进制有关,效率高
4. 拓展运算符
public static void main(String[] args){ int a = 10; int b = 20; a += b;//a = a+b a -= b;//a = a-b System.out.println(a);//30 System.out.println(b);//-10 //字符串连接符 + , String System.out.println(""+a+b);//""是字符串类型,结果是1020;如果字符串在后面的话,则前面正常运算 }
5. 三元运算符
public static void main(String[] args){ //x ? y : z //如果x==true,则结果为y,否则结果为z int score = 80; String type = score < 60 ?"不及格": "及格"; System.out.println(type); }
运算更加简便,也可以根据if来做