java 关键字Static作用

1.静态变量被所有的对象所共享,在内存中只有一个副本【存放在方法区】

  非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本

2.static 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。

  在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次(如果该类的父类中有静态代码块会先执行父类的代码块)。

  但是 代码块 是创建几次对象就执行几次

3.static可以被用来静态导包,调用该方法时就可以不用 class.method() 直接method()就行了

import static java.time.LocalDate.*;

public class demo {
    private  static  int  a=0;
    public static void main(String[] args) {

        new demo();
        new demo();
        System.out.println("a: "+new demo().getA());
//        System.out.println( LocalDate.now());

        /**
         * 原来调用要   LocalDate.now(); 使用静态导入后 待用 now()
         */
        System.out.println("静态导入 import static "+now());

 //        System.out.println("view");
//        System.out.println("service");
//        System.out.println("dao");
//        System.out.println("db");
//        File result = new File("d:\\ff","dd\\gg.java");
//        System.out.println(result.getParentFile());
//        System.out.println(result.getParentFile().mkdirs());
    }

    public  demo(){
        a++;
    }
    public  int getA(){
        return this.a;
    }
    /**
     * static{} 静态代码块,加载类之前执行
     * {} 代码块,每次new的时候都会被执行
     * 对象初始化过程:
     * 1. 初始化static变量
     * 2. 执行static代码块
     * 3. 初始化非static变量
     * 4. 父类无参构造函数
     * 5. 子类构造函数
     * 6. 直接调用类的静态方法执行顺序是:
     * 1)初始化static变量
     * 2)执行static代码块
     * 3)执行静态方法  
     */
    {
        System.out.println("这是一个代码块");
    }

    static{
        System.out.println("这是一个静态代码块");
    }

}

参考:https://www.cnblogs.com/gxyandwmm/p/9478569.html

posted @ 2020-02-05 22:27  Angry-rookie  阅读(102)  评论(0)    收藏  举报