关于Static解释
修饰变量
静态变量(类变量),可以直接用类名调用,适用于多线程。
修饰方法
静态方法(会和类同时加载,且只加载一次)
1、静态方法里可以调用静态方法和非静态方法;
2、非静态方法里只能调用非静态方法;
静态代码块
1、静态代码块,和类同时加载,只执行一次。
2、匿名代码块,赋初始值。
3、构造方法,建对象时加载。
public class Student {
private String name;
private int score;
public Student() {//构造方法
System.out.println("构造方法");
}
{
System.out.println("匿名代码块");//匿名代码块
}
static{
System.out.println("静态代码块");//静态代码块
}
public static void study(){
System.out.println("I like learn!");
go();
//静态类里只能调用静态方法,原因是静态方法是和类一起加载的,实例方法还没有加载,故不可调用。
//run();
}
public void run(){
//实例方法可以调用静态和非静态方法
study();
go();
System.out.println("I can run!");
}
public static void go(){
System.out.println("I can go!");
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-REtAQV6b-1618732298803)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210418154905817.png)]
可以静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class StaticDemo {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(random());
System.out.println(PI);
Student s2 = new Student();
}
}
em.out.println(PI);
Student s2 = new Student();
}
}