簡體   English   中英

我如何將原始數據類型與Java中的泛型區分開?

[英]How do i differ primitive data types from generics in Java?

我開始學習Java,並且有一個問題。

原始數據類型是否可以在Java中創建為任何對象? 我的意思是,在某個深處,有一個叫做Int的類。 泛型是用於創建新數據類型的模板,對嗎? 按照約定,我們必須將它們放在尖括號中,例如<HugeInteger>

基本類型(例如int,double,float)不是對象。 它們是基元,有時會很煩人,不能用作泛型。

對於泛型,您需要對象。 那將是Integer,Double,Float等。

順便說一句,除非聲明,否則沒有稱為Int的類(帶有大寫字母i)。

泛型不代表原始。 它們旨在表示對象(因為泛型類型都隱式擴展了Object )。

您可以使用所需的原始類的包裝器變體來實現相同的效果。

 DDHGeneric<Integer, Integer, Integer, Integer> t = new DDHGeneric<>();

這是“ 為什么使用泛型?”的簡短摘錄 ,可在Java Trail中找到:

簡而言之,泛型在定義類,接口和方法時使類型(類和接口)成為參數。

歸功於@ Makoto

要了解更多信息,您可以閱讀本教程: 泛型限制

並非如此,常規對象是使用new()關鍵字創建的:

Object myObject = new Object();
Integer myInt = new Integer(5);

調用new()在所謂的堆上分配一些內存空間,以便存儲新定義的實例。 每次調用實例時,JVM都會查看實例的存儲地址。

另一方面,在編譯期間將原語注冊到內存中。 假設您有一行:

int i = 5;

在編譯程序時,JVM(java虛擬機)會為i變量創建一個位置,記住該位置在哪里,以及要使用i值的任何位置,都將從該位置獲取它。 如果其他原語具有相同的值(例如int y = 5 ),則將其分配到內存中的同一位置。 這意味着,基元按其值存儲。

您好,歡迎來到Stack Overflow。 首先,沒有用於原始類型的類。 嗯,有IntegerFloat等等,但是它們是包裝器類 它們只包含一個int (或float )變量。 泛型對於某些東西很有用,例如,您有一個名為Couple的類,其中包含兩個對象,但您不知道什么。 他們讓您告訴類,當您實例化它而不是預先定義它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM