Java Int和Integer有什麼區別?

來源:互聯網
上載者:User

標籤:另一個   pes   語言   封裝   不能   帶來   oat   方法   緩衝   

Int

int是我們常說的整型數字,是Java的8個未經處理資料類型(Primitive Type:boolean、byte、short、char、int、float、double、long)之一。Java語言雖然號稱一切都是對象,但未經處理資料是例外。

 

Integer

Integer是int對應的封裝類,它有一個int類型的欄位儲存資料,並且提供了基本操作,比如數學運算,int和字串之間轉換等。在Java5中引入了自動裝箱和自動拆箱功能,Java可以根據上下文,自動進行轉換,極大的簡化了相關編程。

 

關於Integer的值緩衝

這涉及Java5中的另一個改進。構建Integer對象的傳統方式是直接調用構造器,直接new一個對象。但是根據實踐我們發現大部分資料操作都是集中在有限的,較小的數值範圍,因而在Java5中新增了靜態Factory 方法value of,在調用它的時候會利用一個緩衝機制,帶來了明顯的效能改進。按照Javadoc,這個緩衝預設值是-128到127。

 

 補充1

未經處理資料類型和Java泛型並不能配合使用,也就是指Primitive Types和Generic不能混用,於是Java就設計了auto-boxing/unboxing機制,實際上就是primitive value與object之間的隱形轉換機制,否則要是沒喲這個機制,開發人員就必須每次手動顯式轉換,這多麻煩呀。但是primitive value與object各自有各自的優勢,primitive value在記憶體中存的是值,,所以找到primitive value的記憶體位置,就可以獲得值;不像object存的是reference,找到object的記憶體位置,還要根據reference找下一個記憶體空間,要產生更多的IO,所以計算效能比primitive value 差,但是object具備generic的能力,,更抽象,解決業務問題編程效率高。於是Jvav設計者的初衷是這樣的:如果開發人員要計算,就使用primitive value;如果開發人員要處理業務問題,應該使用object,採用Generic機制。反正Java有auto-boxing/unboxing機制,對開發人員來講也不需要注意什麼。為了彌補object計算能力的不足,還設計了static valueof()方法提供緩衝機制,算是一個彌補。

Java Int和Integer有什麼區別?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.