短路问题——|和||,&和&&的区别

&和&&的区别是,&会执行两边,不管第一个是否成立
&&只会执行一边,如果第一个条件为假,则不会走第二个条件
举例

public class Test2{

    public static void main(String[] args){

        int i=3;

        if((i++>5)&(i++<9)){

            System.out.println(i);

            System.out.println("恭喜,执行完了条件语句!");

        }

           System.out.println(i);

    }

}

结果是i=5

public class Test2{

    public static void main(String[] args){

        int i=3;

        if((i++>5)&&(i++<9)){

            System.out.println(i);

            System.out.println("恭喜,执行完了条件语句!");

        }    

        System.out.println(i);

    }

}

结果是i = 4

||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。

注意当他们进行运算的时候,&表示两个数先都变成二进制,然后两个数都是1才为1,其他为0
|表示两个数只要有一个为1,就是1,其他都是0

例如:

int a = 2;
int b = 3;

boolean flag1 = ++a > 1 | --b < 5;
System.out.println(flag1);
System.out.println(a);
System.out.println(b);

结果:flat=true a=3 b=2
如果替换为||,则结果为:flat=true a=3 b=3

你可能感兴趣的:(java,面试)