java|java 逻辑运算符(韩顺平)

【java|java 逻辑运算符(韩顺平)】短路与和逻辑与

  • 基本规则
短路与&&条件1&&条件2两个条件都为true,结果为true,否则为false
逻辑与&条件1&条件2两个条件都为true,结果为true,否则为false
  • 区别
  1. 短路与&&:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
  2. &逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
  3. 短路或||:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
  4. |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
//区别

//int a = 4; //int b = 9; //if (a < 1 && ++b < 50) { //System.out.println("ok3"); //} //System.out.println("a="+ a +"b=" + b); // //if (a < 1 & ++b < 50) { //System.out.println("ok4"); //}


//System.out.println("a="+ a +"b=" + b);
//对于短路与第一个条件为false,后面的条件不在执行和判断
//对于逻辑与第一个条件为false,后面的条件会继续执行和判断

//(1)||短路或:如果第一个条件为true
//则第二个条件不会判断,最终结果为true,效率高
//(2)|逻辑或:不管第一个条件是否为true
//第二个条件都要执行
//int a = 4; //int b = 9; //if( a > 1 || ++b > 4) { //System.out.println("ok4"); //} //System.out.println("a=" + a + "b=" + b); // //if( a > 1 | ++b > 4) { //System.out.println("ok5"); //} //System.out.println("a=" + a + "b=" + b);

  • 异或^
a^b当结果a和b不同时,结果为true,否则为false
补充应用:
  1. 将两个变量的值进行交换
int a =1; int b = 2; a = a ^ b; b = a ^ b; a = a ^ b; System.out.println(a); //2 System.out.println(b); //1

2.寻找出现一次的数(时间复杂度为O(n))
int[] a = {2, 3, 3, 4, 4, 6, 7, 7}; int l = a.length; int eor=0; int i; for(i=0; i


若文章内容错误,希望大家帮忙指正

    推荐阅读