[英]How do pointers work with primitive types in Java?
我正在閱讀什么是NullPointerException,我該如何解決? 在接受的答案中,我讀到了一些我不太了解的內容:
int x; x = 10;
在此示例中,變量x是一個int,Java會將它初始化為0。 當您在第二行中將其分配給10時,您的值10將被寫入x指向的內存位置。
我想原始類型,變量是實際值的內存地址; 對於復雜類型,變量只是指向實際值的指針的內存地址。 但上面引用的答案告訴我,我錯了。 它說“x指向的內存位置”。
因此,如果x指向存儲實際值的內存地址,那么原始類型與復雜類型有何不同? 我不知道原始類型甚至有指針。 指針如何與原始類型一起使用?
原始類型和復雜類型主要在數據存儲方式上彼此不同。 您實際上在查看基本類型和類類型之間的差異
1.每個變量都存儲在計算機內存中的一個位置。
上述語句既適用於原始類型,也適用於類類型。
差異:
2.對於基本類型:變量的值存儲在分配給變量的存儲器位置中 。
這意味着如果我們分配
int x = 10
,則x
的值存儲在存儲值10
的位置,即存儲位置。 這意味着當我們“看”x時,'10'存儲在那里。 也許它會更像是一個“賦值”,你命令x等於10。3.對於類類型:它僅存儲存儲該值的對象的內存地址。 它不直接保持對象本身。
整數x = 10將有一個指向int類型對象的內存地址,然后它將保持值10.這稱為引用 。 可以把它想象成一個目錄,它告訴你去哪個架子來實際檢索這個值。
也
類類型也稱為引用類型或對象類型,它們都表示類的Object(無論是Integer類還是MyPerson類)。
原始類型不是引用類型,因為它們不包含引用 (內存地址)。
這種區別是日常使用中“包裝類”的原因,並且諸如Integer
類的類型被視為int
的包裝類,以允許數據操作,例如在數據結構(例如ArrayList)中存儲整數。 因為ints
是原始數據類型,所以不是object
,而Integer
是。 由於原始類型不是對象 ,我們必須將它們放入一個類中,以便我們將它們添加到Lists,Dictionaries等。這樣我們就有了一個對象列表(指向原始類型)但它們不是裸原始數據類型本身。 有關詳細信息,請參閱此SO問題
此處詳細介紹了原語和非原語(aka類/引用/對象類型)之間的差異。 他們有一個漂亮的圖表來說明它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.