java封裝類型與基礎(chǔ)類型對比示例分析
封裝類型以Long為例,基礎(chǔ)類型以long為例
1 比較equals與==
@Test
public void testEquals() {
Long l1 = 10000L;
long l2 = 10000l;
Long l3 = 10000l;
// 封裝類型與基礎(chǔ)類型==比較的時候,封裝類型會自動轉(zhuǎn)成基本類型做比較
System.out.println(l1 == l2); // true
System.out.println(l1 == l3); // false
System.out.println(l1.longValue() == l3.longValue()); // true
}總結(jié)1:如果使用==號比較,需要把1側(cè)的類型轉(zhuǎn)成基礎(chǔ)類型
2 速度equals與==哪個更快呢?
@Test
public void testFast() {
// string的equals和long的equals,哪個更快
int N = 1000000;
long[] l1 = new long[N];
long[] l2 = new long[N];
Long[] data1 = new Long[N];
Long[] data2 = new Long[N];
String[] str1 = new String[N];
String[] str2 = new String[N];
long j = 0;
for (int i = 0; i < N; i++) {
data1[i] = j;
data2[i] = j;
str1[i] = String.valueOf(j);
str2[i] = String.valueOf(j++);
}
compareL(l1, l2, N); // 10
compareLong1(data1, data2, N); // 100
compareLong(data1, data2, N); // 600
// 總結(jié):Long1.longValue()==Long2.longValue() 比 Long1.equals(Long2) 更快
compareStr(str1, str2, N); // 1000
}
public void compareL(long[] data1, long[] data2, int N) {
long startL = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
for (int j = 0; j < N; j++) {
if (data1[j] == (data2[j])) {
}
}
}
long endL = System.currentTimeMillis();
System.out.println("compareL tasks times :" + (endL - startL));
}
public void compareLong(Long[] data1, Long[] data2, int N) {
long startL = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
for (int j = 0; j < N; j++) {
if (data1[j].equals(data2[j])) {
}
}
}
long endL = System.currentTimeMillis();
System.out.println("compareLong tasks times :" + (endL - startL));
}
public void compareLong1(Long[] data1, Long[] data2, int N) {
long startL = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
for (int j = 0; j < N; j++) {
if (data1[j].longValue() == data2[j].longValue()) {
}
}
}
long endL = System.currentTimeMillis();
System.out.println("compareLong tasks times :" + (endL - startL));
}
public void compareStr(String[] data1, String[] data2, int N) {
long startL = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
for (int j = 0; j < N; j++) {
if (data1[j].equals(data2[j])) {
}
}
}
long endL = System.currentTimeMillis();
System.out.println("compareStr tasks times :" + (endL - startL));
}總結(jié)
通過compareLong1和compareLong對比,可以發(fā)現(xiàn)在保證數(shù)據(jù)正確的前提下,==比equals的速度要快。
結(jié)合總結(jié)1,我們可以在封裝類型比較多時候,使用l1.longValue() == l2.longValue();
以上就是java封裝類型與基礎(chǔ)類型對比示例分析的詳細(xì)內(nèi)容,更多關(guān)于java封裝類型基礎(chǔ)類型對比的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM
這篇文章主要介紹了用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-04-04
springBoot項(xiàng)目中使用@Value取值出現(xiàn)的問題及解決
這篇文章主要介紹了springBoot項(xiàng)目中使用@Value取值出現(xiàn)的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Java使用okhttp3發(fā)送請求的實(shí)現(xiàn)示例
OkHttp3是一個高效的HTTP客戶端,支持HTTP/2、GZIP壓縮、響應(yīng)緩存和異步/同步請求,本文就來介紹一下Java使用okhttp3發(fā)送請求的實(shí)現(xiàn)示例,感興趣的可以了解一下2025-12-12
Java簡單統(tǒng)計(jì)字符串中漢字,英文字母及數(shù)字?jǐn)?shù)量的方法
這篇文章主要介紹了Java簡單統(tǒng)計(jì)字符串中漢字,英文字母及數(shù)字?jǐn)?shù)量的方法,涉及java針對字符串的遍歷、編碼轉(zhuǎn)換、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Mybatis中的resultType和resultMap查詢操作實(shí)例詳解
resultType是直接表示返回類型的,而resultMap則是對外部ResultMap的引用,resultMap解決復(fù)雜查詢是的映射問題。這篇文章主要介紹了Mybatis中的resultType和resultMap查詢操作實(shí)例詳解,需要的朋友可以參考下2016-09-09
SpringBoot2開發(fā)從0開始Spring?Initailizr初始化
這篇文章主要為大家介紹了SpringBoot2從0開始lombok、devtools、Spring?Initailizr的開發(fā)技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

