static关键字总结

使用一个类要开辟栈内存及堆内存,在堆内存中保存对象的属性,每个对象都有自己的属性。

  1. static 可以实现属性的共享。所以static修饰的属性也叫做全局属性、静态属性。
  2. static可以实现方法的类名调用。所以static修饰的方法也叫做类方法。

定义为static的方法,通常因为不希望通过实例化对象进行调用,有两种原因 :

  1. 本类没有提供普通属性,这样产生实例化对象没有意义。
  2. 本类无法直接进行对象实例化,只能够利用static 操作。

注意:

static 不能调用任何非static 的内容。因为所有的属性和方法必须在对象开辟堆内存之后才能调用,而static在类加载,为实例化时就可以被类名所调用的。

static 代码块,最先执行,且只执行一次;普通代码块有隔绝作用,可以使用相同变量;构造代码块先于构造器执行;

public class StaticTest {
    public static int count=0;
    {
        System.out.println("构造代码块"+count);
    }
    public StaticTest() {
        count++;
        System.out.println("构造方法"+count);
    }
    static{
        System.out.println("静态代码块"+count);
    }
    public static void main(String[] args) {
        {
            int x= 10;
            System.out.println("普通代码块x="+x);
        }
        int x= 20;
        System.out.println("代码块外部x="+x);
        StaticTest st0 = new StaticTest();
        StaticTest st1 = new StaticTest();
        StaticTest st2 = new StaticTest();
    }
}
View Code

运行结果如下:

静态代码块0
普通代码块x=10
代码块外部x=20
构造代码块0
构造方法1
构造代码块1
构造方法2
构造代码块2
构造方法3

static静态导入:

import static 包.类.*

静态导入之后,可以直接使用,而不用类.静态方法()的形式;

/**
 * 静态导入包,直接引入pi
 */
import static java.lang.Math.PI;
import static java.lang.Math.random;

public class Person {
    public static void main(String[] args) {

        System.out.println(Math.random());
        System.out.println(PI);
        System.out.println(random());
    }
    public void run(){
        System.out.println("run");
    }

}
View Code

 前辈博客

posted @ 2021-02-16 12:17  少时也曾爱白衣  阅读(79)  评论(0编辑  收藏  举报