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
 
  

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

你可能感兴趣的:(java,蓝桥杯)