java裝箱,java裝箱拆箱啥意思

本文目錄一覽:

java包裝類怎樣理解?裝箱與拆箱又怎樣理解?請通俗的解釋一下,舉個例子也行

Java有一個類型系統有兩個部分組成,包含基本類型(byte、char、int、short、long、float、double、boolean)和引用類型。而基本類型則對應着各自的引用類型,稱為裝箱的基本類型。而引用類型對應着各自的基本類型,稱為拆箱的基本類型。對應的類型為:(Byte、Character、Integer、Short、Long、Float、Double、Boolean)

下面一具體例子來說明裝箱與拆箱

//java 1.5之前創建一個Integer對象Integer i = new Integer(10);//java 1.5之後有了裝箱的特性,直接用下列方式生成一個Integer對象//在這個過程中會將int 類型的10自動裝箱成為Integer類型Integer i = 10;//拆箱 輸出的值為20,這個過程中,會先將Integer類型的j自動拆箱為基本類型的10,最後完成運算Integer j = new Integer(10);int k = 10;

System.out.print(j+k);

java 包裝類 自動裝箱問題

Java包裝類,Wrapper~由於在java中,數據類型總共可分為兩大種,基本數據類型(值類型)和類類型(引用數據類型)。基本類型的數據不是對象,所以對於要將數據類型作為對象來使用的情況,java提供了相對應的包裝類。對於8種數據類型的包裝類分別是:

int—Integer

char—Character

float—Float

double—Double

byte—Byte

short—Short

long—Long

boolean–Boolean

所謂裝箱,就是把基本類型用它們相對應的引用類型包起來,使它們可以具有對象的特質,如我們可以把int型包裝成Integer類的對象,或者把double包裝成Double,等等。

所謂拆箱,就是跟裝箱的方向相反,將Integer及Double這樣的引用類型的對象重新簡化為值類型的數據

J2SE5.0後提供了自動裝箱與拆箱的功能,此功能事實上是編譯器來幫您的忙,編譯器在編譯時期依您所編寫的方法,決定是否進行裝箱或拆箱動作。

自動裝箱的過程:每當需要一種類型的對象時,這種基本類型就自動地封裝到與它相同類型的包裝中。

自動拆箱的過程:每當需要一個值時,被裝箱對象中的值就被自動地提取出來,沒必要再去調用intValue()和doubleValue()方法。

自動裝箱,只需將該值賦給一個類型包裝器引用,java會自動創建一個對象。例如:

Integer i=100; //沒有通過使用new來顯示建立,java自動完成。

自動拆箱,只需將該對象值賦給一個基本類型即可。

例如:

int j=i;

int i = 10;

Integer j =new Integer(i); //手動裝箱操作

int k = j.intValue(); //手動拆箱操作

int i = 11;

Integer j = i; //自動裝箱

int k = j //自動拆箱

java 為什麼要有裝箱和拆箱?

把一個基本類型包裝成一個類,一個是可以使這個類型具有很多可以調用的方法。二個是Java向面像對象語言的靠近。其實Java還不算是很純的面向對象的語言。真正的面向對象,是沒有基本數據類型的。它只有一種類型,就是對象。三個是在泛型中,基本類型是不可以做泛型參數的。如:List int list = new ArrayListint ();這是不合法的。你只能這個樣寫ListInteger list = new ArrayListInteger ();也就是要用int型的包裝類類型來解決基本類型不可以做泛型參數的問題 。

一名話,包裝類有更多的方法和用途, 而這是基本類型沒有的!!!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/250867.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 13:32
下一篇 2024-12-13 13:32

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論