我有一流的圖形用戶界面,所以我可以創建這樣的對象:java中的引用和對象有什麼區別?
GUI g1 = new GUI();
和這樣的引用變量:
GUI g2;
現在像我知道,G2是給參考的參考變量到GUI類和g1是GUI類的一個對象。 g1和g2有什麼區別?我可以使用對象的GUI類的屬性,但g2的可能用法是什麼?
我有一流的圖形用戶界面,所以我可以創建這樣的對象:java中的引用和對象有什麼區別?
GUI g1 = new GUI();
和這樣的引用變量:
GUI g2;
現在像我知道,G2是給參考的參考變量到GUI類和g1是GUI類的一個對象。 g1和g2有什麼區別?我可以使用對象的GUI類的屬性,但g2的可能用法是什麼?
引用的名字。對象是東西。你可以有不同的名字,甚至對於實際上並不存在的東西。
你可以聲明的名稱,實際上並沒有給他們任何「真正」的意思,是這樣的:
GUI g1;
您可以分配的含義(真正的東西來指代)與=運營商名稱:
GUI g1 = some_gui;
名稱可以隨時間變化。同一個名字在歷史的不同點上可以指代不同的事物。
GUI g1 = some_gui;
doSomething();
g1 = some_other_gui;
也有同義詞:多個名稱可參照同樣的事情:
GUI g2 = g1;
這幾乎是引用做什麼。他們的名字是爲了表示東西。
東西可以創建:
new GUI();
東西可以創建和命名當場供以後參考(字面!):
GUI g1 = new GUI();
之類的東西可以用它的名字被提及, (或其任何名稱!):
g1.doSomething();
g2.doSomethingAgain();
可以創建不同的同類物質(Class),並且可以創建nam ED是不同的:
GUI g1 = new GUI();
GUI g2 = new GUI();
GUI g3 = new GUI();
GUI g1_synonym = g1;
:)
偉大的第一段。介紹面向對象思想的好方法。 – 2016-06-10 05:48:19
你是不是能夠使用g2
,直到你分配對象給它,因爲目前它不指向任何對象,而g1
已經指向GUI
對象,你可以用它。
此:
GUI g1 = new GUI();
相當於幾乎:
GUI g1;
g1 = new GUI();
對象是像氣泡浮通過被稱爲堆空間。變量只是指向這些泡泡的鏈接。表達式new GUI()
創建一個對象,並且=
運算符將其鏈接到變量g1
。 g2
也是一個變量,但它沒有鏈接到任何對象。您可以輕鬆地編寫
g2 = g1;
g1 = null;
現掉換他們g2
指g1
指的是在開始的對象,g1
指的是什麼。該對象完好無損,只有變量發生了變化。
其實在你的變量的Java名稱是一個引用(基本類型除外)。你不能使用g2
,因爲它沒有被初始化,甚至不爲空。嘗試調用g2的方法會導致編譯時錯誤。在GUI g2;
之後g2未指向內存中的對象。如果你將g2
設置爲null,像這樣GUI g2 = null;
你可以在聲明後使用它,但是如果你調用g2的方法,你會得到一個運行時間NullPointerException。
g1和g2都是參考。但是g2沒有初始化,所以不能在代碼中使用。
//Tells that g1 g2 should hold Gui object. Currently they are not holding any object.
Gui g1;
Gui g2;
//Now g1 reference holds object. g2 reference still doesn't point to any object.
g1 = new GUI();
是什麼在Java中引用和對象之間的區別?
引用是一種提供訪問其類型對象的方法的實體。一個對象是一個提供訪問它的類或類型成員的方法的實體。
通常,您不能訪問沒有對其引用的對象。
class GUI
{
void aMethod()
{
// some business logic.
}
}
可以調用aMethod
使用或不使用參考。但你肯定需要一個對象。
沒有參考:
new GUI().aMethod();
// you can't reuse the object
// bad way to code.
隨着參考:
GUI aGUIReference = new GUI();
aGUIReference.aMethod();
// Now, the object can be reused.
// Preferred way to code
現在一點解釋給你的代碼行:
GUI g1 = new GUI();
// g1 is a reference to an object of GUI class.
GUI g2;
// g2 is a reference that can point to an object of GUI class
// but currently not pointing to any.
的B/W g1
唯一的區別和g2
是g1
與對象,但g2
點初始化null
g2 = g1;
// it means g2 will point to the same object g1 is pointing to
// only one object but two references.
這是正確的答案。 – 2015-10-15 08:11:45
這需要被接受的答案 – wfunston 2016-12-06 02:40:20
引用的名字。對象是東西。你可以有不同的名字,甚至對於實際上並不存在的東西。
你可以聲明的名稱,實際上並沒有給他們任何「真正」的意思,是這樣的:
GUI g1;
名稱可以隨時間而改變它們的意義。同一個名字可以在不同的時間指向不同的事物。
GUI g1 = some_gui;
doSomething();
g1 = some_other_gui;
這幾乎是參考文獻所做的。他們的名字是爲了表示東西。
東西可以創建:
new GUI();
東西可以創建和命名當場供以後參考(字面!):
GUI g1 = new GUI();
:)
引用是一個 「鉤」 在那裏你可以掛的對象。 一個對象可能位於多個鉤子上。
References
有幾分指針到名爲objects.
GUI g1 = new GUI();
爲了解釋的內存塊,讓我打破了上述說法。
GUI g1;
g1 = new GUI();
第一步驟:g1
是參考變量(指針),還沒有指向任何有效的存儲器位置。
第二步:第二步爲類GUI
的對象分配內存,賦值操作使參考變量g1
指向此對象(內存位置)。 new
關鍵字爲類GUI
的對象分配內存。
我認爲你不能在代碼中使用g2,因爲它還沒有初始化,它是空的。 – evilone 2012-02-12 09:52:31
g1也是參考! – 2012-02-12 09:52:34
我認爲這個問題值得一個不錯的答案保持! – slezica 2012-02-12 10:19:26