static修饰成员变量,方法,类

static修饰成员变量

static修饰的变量,只会初始化一次。当new一个类对象时,static修饰的成员变量首先被初始化,随后是普通成员,最后调用Person类的构造方法完成初始化。也就是说,在创建对象时,static修饰的成员会首先被初始化。并且,当再次new该类的对象时,static修饰的类成员不会被再次初始化,在程序运行过程中,static只会在第一次new时被初始化。被static修饰的成员变量和成员方法独立于该类的任何对象。

static修饰方法

static修饰的方法,可以直接通过类名.方法名()调用。

static修饰的代码块

静态代码块:执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。
顺便说一下,非静态代码块:
执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。非静态初始化块会在构造函数执行时,在构造函数主体代码执行之前被运行。
写法:
{
}

static关键字修饰类

static一般用来修饰成员变量或者函数,但一种特殊用法是用static修饰内部类。普通类是不能用static修饰的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不用实例化外部类。当一个内部类没有使用static修饰时,是不能直接使用内部类创建对象的,需要new Outer().new Inner(),才能创建一个内部类对象。

public class Outer {
    public static class Inner{
        Inner(){
            System.out.println("我是一个内部类");
        }
    }
    public static void main(String[] args) {
        Inner in = new Inner();//我是一个内部类
    }
}
public class Outer {
    public class Inner{
        Inner(){
            System.out.println("我是一个内部类");
        }
    }
    public static void main(String[] args) {
        Inner in = new Outer().new Inner();//我是一个内部类
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容