小题目

  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);  
   	}  
   }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值