⑴ delphi 怎樣判斷對象是否實例化
對象未被創建之前,就是個空指針,也就是代碼里的 nil
一般情況下,判斷對象不為 nil 就可理解為它已經實例化了,正如你的代碼里所表現的那樣
⑵ 怎麼判斷 一個對象是否實例化
這樣不好,如果你Close()一個已實例化的窗體,則當該窗體還沒有被垃圾回收時,該窗體仍然不為null。
我的訪訪是在類中聲明一個欄位:
public static bool instanceFlag = false;
在該類的構造函數中使得 instanceFlag = true;
在該類的Close()或Dispose()方法中使得instanceFlag = false;
這樣根據 instanceFlag 判斷該類是否實例化!
⑶ java里怎麼判斷一個類是否被實例化
if(類變數 != null){
//類已經被實例化了,直接將顯示修改為true.
}else{
//類變數 = new 類();
//將顯示修改為true.
}
//別忘了把當前窗體可視改為false啊!
⑷ 在C#中如何判斷一個對象是否是某個類型的實例
int a = 10;
if (a is int)
{
MessageBox.Show("int");
}
else
{
MessageBox.Show("not int");
}
⑸ Java 內部是如何處理判斷一個對象是否被實例化的
沒有搞過C語言,但是在Java里實例化是指內存創建了一個類型的實例(給它開一個內存空間),這個過程被叫做實例化,也就是說內存創建了這個類的實例,那就是被實例化了,沒有創建就沒有被實例化
1. 所以按照這個邏輯來講,若你這個user == null,那也就是說這個對象沒有被實例化
2. 而user其實只是一個引用,也可以叫指針吧,他指向了一個內存中真實的User實例,但是若um.showUserById(JSONObject.getNames(uid)[0])返回的是一個null,那這個user指針只是一個空指針而已,你可以把這個表達式分開寫
Useruser;
um.showUserById(JSONObject.getNames(uid)[0]);
第一行可以叫創建了一個User類實例的指針,名字叫user
第二行創建了一個User的實例,但是由於實例沒有被任何一個已經申明的指針引用到,所以第二行代碼執行後,雖然在內存中已經創建了一個User的實例,但是由於沒有被任何指針引用到,所以這個新建的實例沒有用,最後被在這個代碼塊結束後被GC回收掉內存
這樣分開寫後,應該可以看到其實User user =um.showUserById(JSONObject.getNames(uid)[0]); 內存只會生成一個實例,而這個實例有指針user指向它而已
⑹ 怎樣判斷一個對象是否已被實例化
System.out.print(對象);列印對象,看結果是null還是類路徑,如果是null表示沒有,否則表示已經初始化;或者直接判斷它是不是等於null,等於null表示未實例化,否則已實例化
if(TestObject == null ){
System.out.print(對象TestObject未實例化);
}
⑺ python中如何判斷一個對象是否一個類的實例
可以用 isinstance(s, myclass)來判斷
如果是s是mycalss的實例,返回True,否則返回False
⑻ 怎樣區分實例,類和對象謝謝
類是對事物的一種定義,對象是實實在在的東西。
樓上的比喻不當。
比如你看到一隻鳥,你會說它是鳥。注意,天上實實在在飛著的是一個「鳥」類的對象,而你腦子里所有的那個概念是「鳥」這個類。概念是抽象的,它規定了「鳥」應該是什麼樣子。而實實在在的那個物體「鳥」是具體的,它符合那個抽象概念的規定。
實例其實就是對象,但是它是有所屬的。比如說,我們可以說他是「人」,但是我們不能單獨說他是「兒子」,我們必須說他是某某的「兒子」。所以,我們定義了類 CA,並通過類 CA 創建了對象 objA。我們就可以說 objA 是類 CA 的實例。
累死我了,如果你還是不懂,我也沒辦法。
⑼ 類中靜態方法和實例方法的區別
靜態方法依賴於類,通過類.靜態方法調用;實例方法依賴於類的對象,需要創建對象後,對象.實例方法使用
實例方法內部不能定義靜態變數,會出現編譯錯誤;實例方法可以直接調用靜態方法;靜態方法內部可以定義和使用實例變數,靜態方法無法直接調用實例方法(因靜態方法載入時類還沒有實例化,實例方法依賴於類的對象)
一般認為靜態方法常駐內存,實例方法只有在使用時才分配內存。但事實上,是一樣的,都是在類被載入時常駐內存。static方法和non-static方法在創建實例對象時,屬性的值對各個對象各不相同(每個實例對象的所有欄位在內存中有一個拷貝,用於區分操作哪個對象的欄位),new一個實例時,會把實例屬性放在GCHeap裡面,同時new的對象放在堆棧上,堆棧指針指向剛才拷貝的的內存地址;而靜態方法中的靜態欄位只有一份;對於static和non-static方法代碼都是一樣的,所以只需要一份代碼,佔用一份內存空間。調用速度上因實例方法需要實例化分配內存,靜態方法則不用,故靜態方法會快一點,但也可忽略不計
早期結構化編程幾乎所有方法都是靜態方法,引入實例化方法的概念是在面向對象概念出現以後,區分靜態方法和實例方法不能單單從性能上理解。創建c++、java、c#這樣面向對象語言的大師引入實例化方法一定不是要解決什麼性能、內存的問題,而是為了讓開發更加模式化、面向對象化。這樣說的話,靜態方法和實例化方式的區分是為了解決模式的問題
靜態方法:一個方法與類的對象無關,如工具類等
實例方法:一個方法依賴於類的對象;多線程場景下,如果靜態方法中含有靜態變數,如果對靜態變數進行更改操作易造成線程安全問題
如果一個方法與對象的實例無關用靜態方法,反之採用實例方法,但如果方法和對象的實例有關,又想維護一份實例時,需要用單例模式。如系統運行時,需要載入一些的配置和屬性,是公共的,需要在整個生命周期存在,只需要一份就可以,但此時這些配置和屬性又是通過面向對象的編碼方式得到的,雖然用靜態方法也能解決,但最好的方式是採用單例模式
⑽ 如何判斷一個對象是否是某個類的實例
1、instanceof是Java的一個二元操作符,和==,>,<是同一類東東。
由於它是由字母組成的,所以也是Java的保留關鍵字。
它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。
舉個例子:
Strings="IAManObject!";
booleanisObject=sinstanceofObject;
我們聲明了一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值為True。
2、另一種方式是使用 getClass()判斷
比如:if(s.getClass()==String.getClass())