java _static 关键字

• 在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.

   • 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,

  • 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!

  • 优先于对象存在,随着类的加载而加载  

  • 可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”

  • static变量置于方法区中!

  如果一个类中所有的成员都是静态的。那么它的构造函数应该设置成 private 的,这样以避免 这个类 被创建成对象

                

 


• 用static声明的方法为静态方法

  • 不需要对象,就可以调用(类名.方法名)

  • 在调用该方法时,不会将对象的引用传递给它,所以static方法中不可访问非static的成员。只能访问静态成员变量和静态成员方法;

    而非静态方法,既可以访问静态成员也可以访问非静态成员

  • 静态方法不能以任何方式引用this和super关键字;(随着类加载而加载,而this是随着对象的创建而存在)

 

public class TestStatic { 

    int a; 
    static int width; 

    static void gg(){
         System.out.println("gg"); } 

    void tt(){ 
        System.out.println("tt"); } 

    public static void main(String[] args){ 
        TestStatic hi = new TestStatic(); 
        TestStatic.width = 2; 
        TestStatic.gg();  //gg(); 
        hi.gg();    //通过引用也可以访问static变量或static方法。不过,一般还 是使用类名.static成员名来访问。 
        gg(); 
       } 
}

 


静态初始化块

• 如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。

类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次;Static 经常用来进行static变量的初始化。

• 是在类初始化时执行,不是在创建对象时执行。

• 静态初始化块中不能访问非static成员。

public class TestStaticBlock { 
    static { 
        System.out.println("此处,可执行类的初始化工作!"); 
        }
     public static void main(String[] args) { 
     System.out.println("main方法中的第一句");
     }
 }            

 

posted @ 2019-05-02 19:00  gaoyang666  阅读(132)  评论(0编辑  收藏  举报