一、通過static修飾的成員變量初始化只會初始化一次
//靜態變量初始化只會初始化一次 public class zuishuai { public static void main(String[] args) { // TODO Auto-generated method stub //double[] my = new double[14]; people a = new people(); a.num+=1; System.out.println("現已創建人數:"+a.num); a.num+=1; System.out.println("現已創建人數:"+a.num); a.num+=1; System.out.println("現已創建人數:"+a.num); } } class people{ public static int num; public people() { num=0; } } /* 輸出: 現已創建人數:1 現已創建人數:2 現已創建人數:3 */
靜態代碼塊中:
當new一個類對象時,static修飾的成員變量首先被初始化,隨后是普通成員,最后調用Person類的構造方法完成初始化。也就是說,在創建對象時,static修飾的成員會首先被初始化
並且,當再次new該類的對象時,static修飾的類成員不會被再次初始化,在程序運行過程中,static只會在第一次new時被初始化
二、static修飾的方法可以無需實例化直接調用
//靜態static修飾的方法可以無需實例化直接調用 public class zuishuai { public static void main(String[] args) { people a = new people(); people.opetor(); //people.opetor1(); 直接調用會報錯 a.opetor1(); } } class people{ public static int num; public people() { num=0; } public static void opetor() { System.out.println("執行靜態方法"); } public void opetor1() { System.out.println("執行非靜態方法"); } }
三、在把這個類導入其他java文件時,可以不用實例化直接調用static修飾的方法
主類:
package qmh; import qmh.people; public class test { public static void main(String[] args) { // TODO Auto-generated method stub people.opetor(); } }
people類:
package qmh; class people{ public static int num; public people() { num=0; } public static void opetor() { System.out.println("執行靜態方法"); } public void opetor1() { System.out.println("執行非靜態方法"); } }
結果輸出:
執行靜態方法