首頁  >  文章  >  Java  >  java靜態方法和非靜態方法的差別是什麼

java靜態方法和非靜態方法的差別是什麼

青灯夜游
青灯夜游原創
2021-05-07 14:23:2428938瀏覽

區別:1.靜態方法是使用static關鍵字修飾的方法,屬於類別的,不屬於物件;非靜態方法是不使用static關鍵字修飾的普通方法,屬於對象,不屬於類別。 2.靜態方法可以直接調用,類別名稱調用和物件調用;非靜態方法只能透過物件調用。 3.生命週期不同。

java靜態方法和非靜態方法的差別是什麼

本教學操作環境: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影片教學

#

以上是java靜態方法和非靜態方法的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn