這篇文章給大家分享的是有關(guān)java靜態(tài)方法和非靜態(tài)方法的區(qū)別有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新會免費(fèi)建站歡迎大家使用!
Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
區(qū)別:1、靜態(tài)方法是使用static關(guān)鍵字修飾的方法,屬于類的,不屬于對象;非靜態(tài)方法是不使用static關(guān)鍵字修飾的普通方法,屬于對象,不屬于類。2、靜態(tài)方法可以直接調(diào)用,類名調(diào)用和對象調(diào)用;非靜態(tài)方法只能通過對象調(diào)用。3、生命周期不同。
本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
一、靜態(tài)方法和非靜態(tài)方法的區(qū)別(調(diào)用對象、引用變量不同)
靜態(tài)方法:是使用static關(guān)鍵字修飾的方法,又叫類方法.屬于類的,不屬于對象, 在實(shí)例化對象之前就可以通過類名.方法名調(diào)用靜態(tài)方法。 (靜態(tài)屬性,靜態(tài)方法都是屬于類的,可以直接通過類名調(diào)用)。
A.在靜態(tài)方法中,可以調(diào)用靜態(tài)方法。
B.在靜態(tài)方法中,不能調(diào)用非靜態(tài)方法。
C.在靜態(tài)方法中,可以引用類變量(即,static修飾的變量)。
D.在靜態(tài)方法中,不能引用成員變量(即,沒有static修飾的變量)。
E.在靜態(tài)方法中,不能使用super和this關(guān)鍵字
非靜態(tài)方法:是不含有static關(guān)鍵字修飾的普通方法,又稱為實(shí)例方法,成員方法。屬于對象的,不屬于類的。(成員屬性,成員方法是屬于對象的,必須通過new關(guān)鍵字創(chuàng)建對象后,再通過對象調(diào)用)。
A.在普通方法中,可以調(diào)用普通方法。
B.在普通方法中,可以調(diào)用靜態(tài)方法
C.在普通方法中,可以引用類變量和成員變量
D.在普通方法中,可以使用super和this關(guān)鍵字
二、靜態(tài)方法和非靜態(tài)方法的區(qū)別(調(diào)用方法不同)
靜態(tài)方法可以直接調(diào)用,類名調(diào)用和對象調(diào)用。(類名.方法名 / 對象名.方法名)
但是非靜態(tài)方法只能通過對象調(diào)用。(對象名.方法名)
三、靜態(tài)方法和非靜態(tài)方法的區(qū)別(生命周期不同)
靜態(tài)方法的生命周期跟相應(yīng)的類一樣長,靜態(tài)方法和靜態(tài)變量會隨著類的定義而被分配和裝載入內(nèi)存中。一直到線程結(jié)束,靜態(tài)屬性和方法才會被銷毀。(也就是靜態(tài)方法屬于類)
非靜態(tài)方法的生命周期和類的實(shí)例化對象一樣長,只有當(dāng)類實(shí)例化了一個(gè)對象,非靜態(tài)方法才會被創(chuàng)建,而當(dāng)這個(gè)對象被銷毀時(shí),非靜態(tài)方法也馬上被銷毀。(也就是非靜態(tài)方法屬于對象)
總結(jié):類方法可以直接通過類名調(diào)用,實(shí)例方法必需先實(shí)例化類,再初始化對象,然后通過類的實(shí)例對象才能調(diào)用
舉例:
class XYZ{ public static void main(String[] str){ XYZ.testStatic(); //直接通過類調(diào)用 XYZ a = new XYZ(); //實(shí)例化,然后構(gòu)造方法會初始化 a.testMethod(); //對象調(diào)用方法 } public static void testStatic(){ System.out.println("This is static method"); } public void testMethod(){ System.out.println("This is instance method"); } }
靜態(tài)static變量/方法 在類加載的過程中被初始化,在內(nèi)存中只存在一份,所以可以把它當(dāng)作是全局變量/方法。
感謝各位的閱讀!關(guān)于“java靜態(tài)方法和非靜態(tài)方法的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!