發(fā)布日期:2020-06-25 18:00
包裝數(shù)據(jù)類型與傳統(tǒng)數(shù)據(jù)類型之間的差別
包裝數(shù)據(jù)類型
我們知道Java中有八種基本數(shù)據(jù)類型,它們對應(yīng)于八種打包類型。 因此,回想一下,當(dāng)您在代碼中使用基包裝數(shù)據(jù)類型或打包類型時(shí),選擇標(biāo)準(zhǔn)是什么? 有沒有標(biāo)準(zhǔn)? 今天,讓我們來看看包裝類型。
基本類型屬于原始數(shù)據(jù)類型,并且原始值存儲(chǔ)在變量中。 包裝類型是參考數(shù)據(jù)類型,并且變量存儲(chǔ)存儲(chǔ)原始值的地址的參考。 讓我們不要考慮將內(nèi)存空間的不同區(qū)域用于不同目的的不同用途,將其作為一個(gè)整體來考慮,并考慮以下語句的內(nèi)存分配過程。
其實(shí)答案很簡單,考慮一下緩存的含義,您可以想到,為了使緩存真正有效,您應(yīng)該放置一些最常用的數(shù)據(jù) 在緩存中。 但是,對于小數(shù),選擇一個(gè)元素?cái)?shù)量不受限制的集合。 因此,Java在考慮此問題時(shí)可能無法考慮該問題。 應(yīng)該使用包裝數(shù)據(jù)類型的什么標(biāo)準(zhǔn)來判斷,哪些元素應(yīng)該放置在緩存中,所以我放棄了,只是沒有緩存。
方法的返回值取決于它是否可以為null以確定是使用包裝器類還是使用基本類。 當(dāng)方法的返回值不能為null時(shí),建議使用基本類作為返回值。 這樣,當(dāng)調(diào)用者獲得此方法的返回值時(shí),無需擔(dān)心它為null。 基本類型在方法內(nèi)部使用(局部變量)。 在時(shí)間效率和效率方面,基本類型優(yōu)于包裝。 因此,在該包裝數(shù)據(jù)類型的方法內(nèi),可以盡可能使用基本類型而不使用包裝類。
包裝器類創(chuàng)建一個(gè)對象,該對象具有方法和字段。 對象的調(diào)用是通過引用對象的地址,并且該引用存在于堆棧存儲(chǔ)器中。 基本類型直接存儲(chǔ)在堆內(nèi)存中,直接存儲(chǔ)Value。 另一個(gè)區(qū)別是包裝類是通過引用傳遞的,而基本類型是通過值傳遞的。 變量的值存儲(chǔ)在堆棧中,而對象存儲(chǔ)在堆中。 相比之下,堆棧效率更高,這也是java保留基本類型的原因。 包裝數(shù)據(jù)類型創(chuàng)建的對象可以使用api提供的一些有用方法。 更加強(qiáng)大。
有一個(gè)有趣的字段Integer.TYPE Integer關(guān)于包裝類,例如。 該字段返回后面是對Class對象的引用,Integer.TYPE和int.class表示相同。 順便說一下,String實(shí)際上不是char的純數(shù)組,而是引用類型。 應(yīng)用程序類型是用戶自己定義的某些類,或者Java等提供的某些類通常是使用構(gòu)造函數(shù)構(gòu)造的。 還有一個(gè)常用的引用類型:BigInteger,通常將其當(dāng)作一個(gè)大數(shù)字來處理,其字節(jié)大小取決于JVM可用的大小。 由于Java中的重載運(yùn)算符只是+ =和+,因此您無法進(jìn)行基本包裝數(shù)據(jù)類型之類的操作。 相反,您可以使用BigInteger的函數(shù)進(jìn)行操作。
包裝類是具有方法和字段的對象,并且通過引用對象的地址來調(diào)用該對象; 基本類型不是包裝類型是引用的傳遞; 基本類型是值的傳遞。 聲明方法不同:基本數(shù)據(jù)類型不需要new關(guān)鍵字; 打包類型需要new才能在堆內(nèi)存中分配新內(nèi)存。
存儲(chǔ)位置不同:基本數(shù)據(jù)類型直接將值保存在值堆棧中; 打包類型是將對象放在堆上,然后通過引用該對象來調(diào)用它們。 初始值不同:int的初始值為0,布爾的初始值為false,包裝類型的初始值為null。 使用方式不同:直接分配和使用基本包裝數(shù)據(jù)類型; 包裝類型用于CoolectionMap等集合中。
基本數(shù)據(jù)類型通常在堆棧上分配。 如果要在堆上分配它們,則只能使用基本數(shù)據(jù)類型包裝器類。 讓我們以Double double為例,基本數(shù)據(jù)類型包裝數(shù)據(jù)類型可以調(diào)用一系列方法。 例如,通常在包裝類方法的底層調(diào)用常用的力傳遞。
Java不是純粹的面向?qū)ο笳Z言。 Java是一種面向?qū)ο蟮恼Z言,但是Java的基本數(shù)據(jù)類型不是面向?qū)ο蟮摹?但是,在實(shí)際使用中,我們經(jīng)常需要將基本數(shù)據(jù)轉(zhuǎn)換為對象以便于操作。 例如:在集合的操作中,這是我們需要將基本數(shù)據(jù)類型轉(zhuǎn)換為對象的地方。
自動(dòng)裝箱:將基本類型轉(zhuǎn)換為包裝類型; 自動(dòng)拆箱:將包裝類型轉(zhuǎn)換為基本類型注意:使用時(shí),Integer x = null; 該代碼將出現(xiàn)NullPointerException。 建議在使用前確定它是否為空。
基本類型屬于原始數(shù)據(jù)類型,并且原始值存儲(chǔ)在變量中。 包裝類型是參考包裝數(shù)據(jù)類型,并且變量存儲(chǔ)存儲(chǔ)原始值的地址的參考。