構建新對象時,我使用下面的代碼。在這段代碼中,對象引用了變量'a'嗎?Java - 對象聲明和初始化
BankAcc a = new BankAcc();
另外,出於興趣,如果上述構造變量a的新對象,下面做了什麼?它只是創建一個沒有變量/對象引用的新對象嗎?
new BankAcc();
謝謝!
構建新對象時,我使用下面的代碼。在這段代碼中,對象引用了變量'a'嗎?Java - 對象聲明和初始化
BankAcc a = new BankAcc();
另外,出於興趣,如果上述構造變量a的新對象,下面做了什麼?它只是創建一個沒有變量/對象引用的新對象嗎?
new BankAcc();
謝謝!
是的,是的。
當你只想使用匿名對象而不關心引用時,第二個可能很有用。像:
new Thread(new Runnable() {
public void run() { }
}).start();
是的,它只是創建對象,但它不會被分配給任何引用,因此您不能訪問該對象並對該對象執行任何操作。它會留在那裏直到垃圾收集。
是的,是的。
請注意,僅僅創建一個類的新實例而不持有對它的引用並不是聞所未聞(儘管不一定是理想的),因爲該類的構造函數可以完成給定操作所需的所有內容。
第二行代碼實例化一個BankAcc類的匿名實例。
這是實例化一個類的快捷方式,它通常用於當你需要參考只有一次,例如一個類的實例傳遞給方法的參數:
myFunc(new BankAcc());
是變量引用是「a」,是new BankAcc();
創建一個沒有變量的新對象,從而使其匿名。
new BankAcc()
創建對象並調用構造函數。有時候,你需要做的,例如:
Rectangle rect = new Rectangle(new Point(100, 200), new Dimension(100, 300));
這僅僅是一個代碼示例,這樣你可以看到它如何被使用。
我覺得孫一些它非常好聽,
「新員通過一個新的對象分配內存,並返回到內存的引用實例化一個類,新的運營商也將調用對象的構造。」
所以是a
是BankAcc
你與new
操作實例化對象的引用,即要分配=
的new
返回變量a
這是類型BankAcc
的一個實例的引用,關於你的第二個點,這可以完成(編譯和執行),但我不明白爲什麼你會這麼做,除非構造函數做了一些「重要」的事情。
編輯:請參閱鐸的答案對於其中沒有參考實例實施例是適用
如this Java tutorial通過使用
BankAcc a = new BankAcc();
解釋的,對象的創建是一個多步驟的處理。你有聲明,實例和初始化一步
我將只強調從教程這是有關您的問題最有趣的部分:
要聲明一變量,您使用type name;
(在這種情況下爲BankAcc a;
),這表示a
將/可以用於指代類型爲BankAcc
的數據。這時,a
不引用任何對象
要實例化a
使用new
關鍵字。這將爲新對象分配內存並返回對該內存的引用。 new
運算符需要一個單一的後綴參數:對構造函數的調用。您是否選擇將通過調用new
返回的引用賦值給變量或不是。也可以直接在表達式中使用該參考文獻(例如new Rectangle().height;
)
的初始化是給構造,初始化新的對象的實際調用。構造函數由new
運算符調用
對象是實時實體或真實世界實體。對象的 例子是筆,汽車,板,表,鉛筆等,
假設看你的類名是Book.here我們如何申報對象
書的obj =新的圖書();
+1我還沒有做太多的線程,但我找到了這個例子,爲什麼你可能不需要引用一個有趣的對象 – 2011-12-31 16:16:14
你也不需要保留一個引用,如果對象添加自己的排序收集作爲其內部建設/初始化的一部分。 – 2011-12-31 16:20:44
@AaronJLang這也是非常有趣的,不知道你會在哪裏/什麼時候這樣做,但會看看它,謝謝。 – 2011-12-31 17:07:46