-
进行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);
}
}