java中int與integer的區別
一、java基本資料型別及其封裝類別
java資料型別有基本資料型別和參考資料型別,為了方便將基本資料型別當作物件處理,java引入了基本資料型別相對應的封裝類,如int封裝類是Integer。
線上教學影片分享:java教學影片
二、java自動拆箱和自動裝箱
1、自動裝箱
自動裝箱其實就是將基本資料型別轉換成參考資料型別(物件)
2、自動拆箱
自動拆箱其實就是將引用資料型別轉換為基本資料型別
程式碼如下:
public static void main(String[] args) { Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1); int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1 System.out.println(a); System.out.println(b); }
列印結果:
1 0
三、 int和Interger的差別
從上面我們就能看出int和Interger的差別:
int是基本資料型,Integer是引用資料型別;
int預設值是0,Integer預設值是null;
int型別直接儲存數值,Integer需要實例化對象,指向對象的位址。
說到這,是不是認為就這麼完事了,其實它們之間還有一些細節方面的區別:如下
public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); int c = 1; int d = 1; Integer e = 1; Integer f = 1; Integer g = 130; Integer h = 130; Integer i = new Integer(130); int j = 130; }
1:a == b 嗎?廢話,肯定不相等。兩個new出來的物件位址不一樣。
2:c == d 嗎?這個也是廢話,都是基本資料型別的值肯定相等。
3:現在的關鍵問題是 e == f 嗎? g == h 嗎?
答案是:e == f; g != h。
為什麼會出現這種情況?因為ava在進行編譯時 Integer g = 130會被編譯成 Integer.valueOf(130) ,這個可以透過反編譯class檔案看到。而透過Integer原始碼可以得出,Integer.valueOf() 方法會在數值-128~127之間會對Integer進行緩存,不會再重新new一個,所以e==f ;當數值二大於127或小於- 128的時候則會重新new一個,所以g != h 。
Integer的valueOf方法如下:
public static Integer valueOf(int i) { //IntegerCache.low == -128 ;IntegerCache.high == 127 //当数值大于-128小于127时,进行缓存;否则重新new一个。 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
4:c == e 嗎, i == j 嗎?
答案都是相等的。因為封裝類別和基本資料型別進行比較的時候,java會自動拆箱,然後比較數值是否相等。
總結:
1、都是封裝類,都是new出來的,一定不相等。因為物件的記憶體位址不一樣。
2、都是封裝類,都不是new出來的,如果值在-128~127之間,那就相等,否則不相等。
3、如果是封裝類別和基本型別比較,只要數值相等那就相等,否則就不相等。因為封裝類別和基本資料型別進行比較的時候會有一個自動拆箱操作。
4、都是基本資料型,如果數值相等,那就相等;否則不相等。
想了解更多相關教學請造訪:java入門
#以上是java中int與integer的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

随着PHP框架技术的不断发展,Yi2和TP5作为两大主流框架备受关注。它们都以出色的性能、丰富的功能和健壮性著称,但却存在着一些差异和优劣势。了解这些区别对于开发者在选择框架时至关重要。

探討後端開發中的分層架構在後端開發中,分層架構是一種常見的設計模式,通常包括controller、service和dao三層�...

瑞波幣(XRP)由Ripple公司創建,用於跨境支付,快速且費用低,適合小額交易支付。註冊錢包和交易所後,可進行購買和存儲。

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

去中心化交易所和混合型交易所的區別主要體現在:1. 交易機制:去中心化交易所使用智能合約撮合交易,混合型交易所結合中心化和去中心化機制。 2. 資產控制:去中心化交易所用戶自控資產,混合型交易所有中心化和去中心化兩種模式。 3. 隱私保護:去中心化交易所提供高匿名性,混合型交易所在中心化模式下需KYC。 4. 交易速度與流動性:去中心化交易所速度較慢,流動性依賴用戶池,混合型交易所在中心化模式下速度和流動性較高。 5. 平台治理:去中心化交易所由社區治理,混合型交易所有社區和中心化團隊共同治理。
