java运算符新用法和^新认识

public class Demo1 {

    public static void main(String[] args) {
        boolean t = false | true;
        System.out.println(t);
        t |= false;
        System.out.println(t);
        t = t&false;
        System.out.println(t);
        t &= false;
        System.out.println(t);
        t = t^true;
        System.out.println(t);
        t^=true;
        System.out.println(t);
    }

^ 异或运算符

 真^假=真  假^真=真  假^假=假  真^真=假

只要两个条件同时为真或假,其结果都为假

假如现在有这个场景现在公司需要两个程序员,因为考虑到工作积极性,需要一男一女,

老总在最后审核时必须可能是这样的

if(!(x==男^y==男||x==女^y==女)){

  直接PASS

}

JAVA请使用异或运算符^, 实现两个整数的交换

Scanner in=new Scanner(System.in);
int A=in.nextInt();
int B=in.nextInt();
A=A^B;
B=B^A;
A=A^B;
System.out.println(A+" "+B);

很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了

由于有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了,利用异或运算的两个特性——1.自己与自己异或结果为0,2.异或满足 
交换律。 

public static int findLost(int a[]){ 
        int result=0; 
        for(int i=0;i<a.length;i++) { 
            result^=a[i]; 
        } 
        return result; 
} 

 

posted @ 2015-11-21 22:45  匹夫鹏  阅读(997)  评论(0编辑  收藏  举报