您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java靜態方法和非靜態方法的區別有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
區別:1、靜態方法是使用static關鍵字修飾的方法,屬于類的,不屬于對象;非靜態方法是不使用static關鍵字修飾的普通方法,屬于對象,不屬于類。2、靜態方法可以直接調用,類名調用和對象調用;非靜態方法只能通過對象調用。3、生命周期不同。
本教程操作環境:windows7系統、java8版、DELL G3電腦。
一、靜態方法和非靜態方法的區別(調用對象、引用變量不同)
靜態方法:是使用static關鍵字修飾的方法,又叫類方法.屬于類的,不屬于對象, 在實例化對象之前就可以通過類名.方法名調用靜態方法。 (靜態屬性,靜態方法都是屬于類的,可以直接通過類名調用)。
A.在靜態方法中,可以調用靜態方法。
B.在靜態方法中,不能調用非靜態方法。
C.在靜態方法中,可以引用類變量(即,static修飾的變量)。
D.在靜態方法中,不能引用成員變量(即,沒有static修飾的變量)。
E.在靜態方法中,不能使用super和this關鍵字
非靜態方法:是不含有static關鍵字修飾的普通方法,又稱為實例方法,成員方法。屬于對象的,不屬于類的。(成員屬性,成員方法是屬于對象的,必須通過new關鍵字創建對象后,再通過對象調用)。
A.在普通方法中,可以調用普通方法。
B.在普通方法中,可以調用靜態方法
C.在普通方法中,可以引用類變量和成員變量
D.在普通方法中,可以使用super和this關鍵字
二、靜態方法和非靜態方法的區別(調用方法不同)
靜態方法可以直接調用,類名調用和對象調用。(類名.方法名 / 對象名.方法名)
但是非靜態方法只能通過對象調用。(對象名.方法名)
三、靜態方法和非靜態方法的區別(生命周期不同)
靜態方法的生命周期跟相應的類一樣長,靜態方法和靜態變量會隨著類的定義而被分配和裝載入內存中。一直到線程結束,靜態屬性和方法才會被銷毀。(也就是靜態方法屬于類)
非靜態方法的生命周期和類的實例化對象一樣長,只有當類實例化了一個對象,非靜態方法才會被創建,而當這個對象被銷毀時,非靜態方法也馬上被銷毀。(也就是非靜態方法屬于對象)
總結:類方法可以直接通過類名調用,實例方法必需先實例化類,再初始化對象,然后通過類的實例對象才能調用
舉例:
class XYZ{ public static void main(String[] str){ XYZ.testStatic(); //直接通過類調用 XYZ a = new XYZ(); //實例化,然后構造方法會初始化 a.testMethod(); //對象調用方法 } public static void testStatic(){ System.out.println("This is static method"); } public void testMethod(){ System.out.println("This is instance method"); } }
靜態static變量/方法 在類加載的過程中被初始化,在內存中只存在一份,所以可以把它當作是全局變量/方法。
感謝各位的閱讀!關于“java靜態方法和非靜態方法的區別有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。