关于static关键字
static用于修饰成员(成员变量,成员函数),不能修饰局部变量
被修饰的变量和函数是静态的,可被多个对象共享,节省内存
可以直接被类名调用
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
特点:
生命周期和所属类相同
优先于对象存在
为所有对象共享
直接被类名调用
注意:
静态方法不能访问非静态变量和方法!
静态方法中不能有this,super关键字,应静态方法先于对象存在
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
什么时候使用静态
当对象中有共享数据时,即相同的东西,用静态来定义。
非静态数据存在于堆内存中。
当函数内部没有访问到非静态数据时,该函数可以定义为静态的。
例如:创建一个工具类,工具里的方法都定义为静态,而调用此类并不用
创建对象,可以把构造方法私有化来避免创建对象。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
静态代码块
格式:
static { 语句; }
功能:在类加载的时候运行,只运行一次,对类进行初始化
注意:静态代码块,还是不能引用非静态成员
代码举例:
1 class Test 2 { 3 static 4 { 5 System.out.println("类已加载"); 6 } 7 public static void show() 8 { 9 System.out.println("aa"); 10 } 11 } 12 class TestEntr 13 { 14 public static void main(String[] args) 15 { 16 new Test(); //运行 此处生成对象用到类中的构造方法, 17 Test.show(); //运行 用到类中的show() 18 Test t = null; //不运行,所谓类加载是指用到类中的内容 19 //而此处只是生成一个类的引用而未用到类中的内容 20 } 21 }