小题目

  1. 进行Long值的比较

    Long l1 = -128L;
    Long l2 = -128L;
    Long l3 = 127L;
    Long l4 = 127L;
    
    System.out.println("l1==l2----" + (l1 == l2));  //true
    System.out.println("l1==l28L----" + (l1 == -128L));//true
    System.out.println("l3==l4----" + (l3 == l4));//true
    
    Long l11 = 128L;
    Long l22 = 128L;
    Long l33 = 127L;
    Long l44 = 127L;
    
    System.out.println("l1==l2----" + (l11 == l22));  //false
    System.out.println("l1==l28L----" + (l11 == 128L));//true
    System.out.println("l3==l4----" + (l33 == l44));//true
    

如果Long的值在[-128,127]之间,可以用等号进行判断是否相等,如果不在这个区间,是不能用等号的。

public static Long valueOf(long l) {
    final int offset = 128;
    if (l >= -128 && l <= 127) {
  // 如果是已经使用一个数值,并且在-128到127之间,那么就会缓存在LongCache中,因此对比对象的时候,是相等的。
  //但是如果超过了这个范围,那么就会创建一个新的对象,那么使用==比较地址,就不相等。
       return LongCache.cache[(int)l + offset];
    } 
 return new Long(l);
}

2.调用顺序
下面 结果为dianping dazhong。因为这里的Thread使用的是run()调用的。如果是start(),就会打印为dazhong dianping.

 static void dianping(){

    System.out.print("dianping ");

}

public static void main(String[] args) {
    new Thread(){
        @Override
        public void run() {
            super.run();
            dianping();
        }
    }.run();

    System.out.print("dazhong ");
}

3.异或的运用
一个数组存放了2n+1个整数,其中有n个数出现了2次,1个数出现了1次,找出出现1次的数是多少?

    //异或运算 0与任何数异或等于任何数,相等的两个数异或等于0,
    //也就是两个数对应的二进制位进行异或运算;0^0=0 , 1^0=1 , 0^1=1 , 1^1=0
    //出现偶数次都完蛋了,就剩下出现奇数次的了
 public class XOR {  
	  public static void main(String[] args){  
	    int[] arr={3,3,1,2,4,2,5,5,4};  
  	    int res=0;//初始值   
 	    for(int i=0;i<arr.length;i++){  
           res ^=arr[i];  
        }  
      System.out.println(res);  
   	}  
   }  

猜你喜欢

转载自blog.csdn.net/yuezheyue123/article/details/88426356