Java 中有靜態方法和非靜態方法之分,它們在內存上有一些不同。下面我們來了解一下。
首先,靜態方法是在類加載時就已經被加載到內存中的,而非靜態方法是在實例化時才加載到內存中的。
其次,靜態方法雖然常駐內存,但是只有一份,它被所有實例共享。而非靜態方法則是每個實例都有一份,它們之間互不影響。
讓我們來看一段代碼來展示這種區別:
public class MemoryDifference { public static void main(String[] args) { Student.staticMethod();//調用靜態方法 Student s1 = new Student(); s1.normalMethod();//調用非靜態方法 Student s2 = new Student(); s2.normalMethod();//調用非靜態方法 } } class Student { public static void staticMethod() { System.out.println("這是一個靜態方法"); } public void normalMethod() { System.out.println("這是一個非靜態方法"); } }
在上面的代碼中,我們調用了一個靜態方法和兩個非靜態方法。靜態方法只需要執行一次,所以我們只調用了一次。而非靜態方法則因為創建了兩個不同的實例而調用了兩次。
因此,我們需要注意靜態方法和非靜態方法之間的區別。在需要共享一個方法的情況下,我們可以使用靜態方法,否則應該使用非靜態方法。