簡體   English   中英

攜帶對象的變量類型是什么?

[英]What is the variable type that carry objects?

現在,當我從特定類中用Java創建新對象並將其分配給變量時,我們將該變量稱為什么?

Class1 new1 = new Class1();

問題是關於“ new1”的問題,如果它是對象或帶有對象的變量。 還有,當我們說

public class Class1 {
Class2 n1;
}
public class Class2{
void method();
}

是否將n1視為實例變量或其他類的對象?

如果它是對象,那么在寫入之前要攜帶它,

n1 = new Class2();

  • 問題1:它稱為參考。 new1擁有一個內存地址1 ,新創建的Class1類型的對象位於該地址中。

  • 問題2:通常,您將其稱為屬性或字段。 在這里,它是對象而不是原始對象這一事實無關緊要。

  • 問題3:如果未初始化的引用是類屬性,則為null 但是,如果引用是局部變量,則未初始化 ,如EJP所指出的那樣。 您無法讀取未初始化的局部變量,這將導致編譯錯誤。

進一步說明:在Java中,對象始終存儲在堆內存中。 沒有例外。 但是,您的局部變量(如第一個示例中的new1 )位於堆棧上,並引用堆上的新對象。 這就是Java 傳遞值的原因


1實際上,不是引用內存地址,而是引用唯一的ID。 Java隱藏物理內存地址。

當我從特定的類中用Java創建新對象並將其分配給變量時,我們將該變量稱為什么?

在一般情況下,我們僅將其稱為變量。

我們也可以稱它為初始化變量。 但是“已初始化”只是一個形容詞,反映了您已為其分配了某些內容的事實。 還有其他形容詞可能適用。 例如“實例變量”,“局部變量”,“類變量”,並且其中一些具有常見的同義詞。

問題是關於“ new1”的問題,如果它是對象或帶有對象的變量。

絕對不是對象。

是否將n1視為實例變量或其他類的對象?

它是一個“實例變量”。 它也被稱為“字段”或“屬性”,但是“實例變量”是Java語言規范使用的術語。

如果它是一個對象,則在編寫n1 = new Class2();之前要攜帶的是什么n1 = new Class2();

這不是一個對象。 變量不是對象,也不是原始值。 變量將保存一個值,但不是一個值。

(經常使用的類比是,變量是可以容納某些東西的“插槽”或​​“鴿子洞”。變量是插槽,而不是插槽中的東西。)

如果變量n1是實例變量,則其狀態將為null 如果n1是局部變量,則Java語言不會讓您看到狀態是什么,因為在顯式初始化之前訪問局部變量是非法的。

暫無
暫無

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

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