一、通过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("执行非静态方法"); } }
结果输出:
执行静态方法