簡體   English   中英

指針如何與Java中的原始類型一起使用?

[英]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.

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