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ǔ)類型對比示例分析的詳細內(nèi)容,更多關(guān)于java封裝類型基礎(chǔ)類型對比的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Mybatis Plus 增刪改查的實現(xiàn)(小白教程)
本文主要介紹了Mybatis Plus 增刪改查,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Java實現(xiàn)爬取往期所有雙色球開獎結(jié)果功能示例
這篇文章主要介紹了Java實現(xiàn)爬取往期所有雙色球開獎結(jié)果功能,涉及Java網(wǎng)頁抓取、正則替換、文件讀寫等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07idea中g(shù)it如何刪除commit提交的log信息
這篇文章主要介紹了idea中g(shù)it如何刪除commit提交的log信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07使用Okhttp實現(xiàn)上傳文件+參數(shù)請求接口form-data
在進行接口對接時,常遇到需要傳遞多種類型參數(shù)及文件上傳的情況,解決此問題的關(guān)鍵在于參數(shù)傳遞和文件上傳的正確處理,在Service層和Controller層的傳參,可以通過@RequestParam標注或直接使用請求實體類,但若結(jié)合文件上傳,則不應(yīng)使用@RequestBody注解2024-10-10Spring Security實現(xiàn)不同接口安全策略方法詳解
這篇文章主要介紹了Spring Security實現(xiàn)不同接口安全策略方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09Java框架搭建之Maven、Mybatis、Spring MVC整合搭建(圖文)
這篇文章主要介紹了Java框架搭建之Maven、Mybatis、Spring MVC整合搭建(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12