Java中的static

Static

  static表示静态的意思。

  static关键字可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类。

 

静态字段

  static修饰的字段称为静态字段静态属性

  静态字段属于类,不属于类中的任何对象。所有对象共同使用唯一一份静态的成员变量。

  如果一个成员变量是static的,那么可以通过:类名.成员变量名的形式使用。(也可以用变量名.成员变量名的形式,但是使用类名更好一些)。

 

静态方法

  static修饰的方法称为静态方法

  静态方法可以使用类名.方法名的方式来访问。

  静态方法只能继承,不能重写(Override

  多态调用时,静态方法属于一种特殊情况,父类的引用指向子类的对象,调用静态方法时,调用的仍是父类中的版本。因为子类不能覆写父类的静态方法。如果子类和父类中定义了同样的静态方法,起到的仅仅是隐藏的作用。

  (http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html

  静态方法只能访问静态的成员变量,因为非静态的成员与特定的对象相关联,而静态方法并不能明确是哪个对象。

  但是非静态的方法静态非静态的成员都可以访问。

  不能在静态方法中使用this关键字。

 

static代码块

  静态代码块:

  static

  {

    //内容

  }

  静态代码块的作用一般是完成一些初始化工作。

  静态代码块在类被加载的时候执行。要想调用某个类来生成对象,首先需要将类加载到Java虚拟机(JVM)上,然后用JVM加载这个类来生成对象。

  因为每个类只会被加载一次,所以静态代码块也只会被执行一次。而构造方法是在生成对象的时候被执行,每次生成对象都会调用构造方法。

  如果继承体系中有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层的类的静态代码块;然后再去执行最顶层的类的构造方法,一直执行到最底层的类的构造方法。注意,静态代码只会执行一次。

  如果有多个static代码块,JVM将按照它们在类中出现的顺序依次执行它们。

  补充说明一下:如果有非静态的初始化语句,这些语句将在构造方法之前执行。

原文地址:https://www.cnblogs.com/mengdd/p/2834720.html