java復(fù)合數(shù)據(jù)類型 非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?
非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?原因很簡單,因?yàn)殪o態(tài)方法可以直接使用而無需實(shí)例化。但非靜態(tài)方法只能在實(shí)例的幫助下使用。如果在靜態(tài)方法中使用非靜態(tài)變量,則不能直接使用“無實(shí)例化”變量。矛盾。為什么不
非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?
原因很簡單,因?yàn)殪o態(tài)方法可以直接使用而無需實(shí)例化。但非靜態(tài)方法只能在實(shí)例的幫助下使用。如果在靜態(tài)方法中使用非靜態(tài)變量,則不能直接使用“無實(shí)例化”變量。矛盾。
為什么不能從靜態(tài)的方法里面調(diào)用非靜態(tài)方法,或變量?
無需初始化即可調(diào)用靜態(tài)方法。例如,學(xué)生班有一個(gè)靜態(tài)的方法學(xué)習(xí),可以學(xué)生學(xué)習(xí)而不是實(shí)例化一個(gè)student對(duì)象。然而,非靜態(tài)全局變量只能在對(duì)象實(shí)例化后綁定到實(shí)例化對(duì)象時(shí)使用,因此存在矛盾。如果靜態(tài)方法調(diào)用非靜態(tài)變量,則該變量可能不會(huì)實(shí)例化,因此無法調(diào)用。
java非靜態(tài)方法可以調(diào)用靜態(tài)變量嗎?
當(dāng)然。
1. 靜態(tài)成員變量和靜態(tài)成員方法屬于類而不是特定實(shí)例。靜態(tài)成員(包括屬性和方法)已在類加載階段初始化,因此當(dāng)實(shí)例訪問靜態(tài)成員時(shí),靜態(tài)成員必須已經(jīng)存在,以便可以訪問。
2. 另一方面,如果您讓靜態(tài)方法訪問實(shí)例成員,它將不起作用,因?yàn)閷?shí)例成員的初始化在靜態(tài)成員之后
&Ltbr>您的主方法是靜態(tài)的(這永遠(yuǎn)不能更改),但是Java規(guī)定靜態(tài)方法不能引用非靜態(tài)變量或方法。因此,在main方法中,您不能訪問您首先定義的變量,例如jtextfield、IP1、IP2、IP3、IP4,即使您首先定義它,您仍然必須在main方法中定義它;您不能調(diào)用非靜態(tài)方法,就像if(checkip()==0)一樣,這將提示您出錯(cuò)。有兩種解決方法<br>。一種是將變量和方法聲明為靜態(tài)的(不建議浪費(fèi)內(nèi)存空間)。另一種方法是使用面向?qū)ο蠹夹g(shù)聲明一個(gè)對(duì)象<br>test t=newtest()<br>,然后在t中調(diào)用test()方法和成員變量,這樣它就不會(huì)提示錯(cuò)誤。LZ似乎還沒有理解Java的思想。初始化可以在構(gòu)造函數(shù)中完成。