Long 相等對比分析
四種對比方案
小于128L可以直接用==判斷,存在風(fēng)險不建議直接使用==
Long a = 200L;
Long b = 200L;
System.out.println(a.equals(b));
System.out.println(a.longValue()==b.longValue());
System.out.println(a-b==0);
System.out.println(a.compareTo(b) == 0);
檢測項目代碼時發(fā)現(xiàn)了另外的一種寫法
oneBigNum.toString().equals(twoBigNum.toString()
一時興起厕妖,對性能進行了一下測試(有點孔乙己的感覺)
package org.example;
public class Main {
public static void main(String[] args) {
Long oneNum=100L;
Long twoNum=100L;
Long oneCommNum127=127L;
Long twoCommNum127=127L;
Long oneCommNum128=128L;
Long twoCommNum128=128L;
Long oneBigNum=10000L;
Long twoBigNum=10000L;
int times=100*100*10000;
System.out.println("equals times---> "+times);
long t1=System.currentTimeMillis();
for (int i=0;i<times;i++){
boolean a=oneBigNum.equals(twoBigNum);
}
long t2=System.currentTimeMillis();
System.out.println("oneBigNum.equals(twoBigNum)--耗時---> "+(t2-t1));
t1=System.currentTimeMillis();
for (int i=0;i<times;i++){
boolean a=oneBigNum.toString().equals(twoBigNum.toString());
}
t2=System.currentTimeMillis();
System.out.println("oneBigNum.toString().equals(twoBigNum.toString())--耗時---> "+(t2-t1));
t1=System.currentTimeMillis();
for (int i=0;i<times;i++){
boolean a=oneBigNum.longValue()==twoBigNum.longValue();
}
t2=System.currentTimeMillis();
System.out.println("oneBigNum.longValue()==twoBigNum.longValue()--耗時---> "+(t2-t1));
t1=System.currentTimeMillis();
for (int i=0;i<times;i++){
boolean a=0==oneBigNum-twoBigNum;
}
t2=System.currentTimeMillis();
System.out.println("0==oneBigNum-twoBigNum--耗時---> "+(t2-t1));
t1=System.currentTimeMillis();
for (int i=0;i<times;i++){
boolean a=0==oneBigNum.compareTo(twoBigNum);
}
t2=System.currentTimeMillis();
System.out.println("oneBigNum.compareTo(twoBigNum)--耗時---> "+(t2-t1));
}
}
輸出
equals times---> 100000000
oneBigNum.equals(twoBigNum)--耗時---> 6
oneBigNum.toString().equals(twoBigNum.toString())--耗時---> 6005
oneBigNum.longValue()==twoBigNum.longValue()--耗時---> 4
0==oneBigNum-twoBigNum--耗時---> 4
oneBigNum.compareTo(twoBigNum)--耗時---> 4
總結(jié)
包裝類已經(jīng)提供了equals方法盡量采用其提供的方法進行相等對比