静态方法与非静态的方法以及它们的调用关系
public class Demo1 {
private int age; //非静态的变量
private static double score;//静态的变量
public void run(){
go(); //非静态的方法调用静态的方法
Demo1.go();
double score = Demo1.score;
int age1 = this.age;
}
public static void go(){
double score = Demo1.score;
int age1 = this.age; //不可调用非静态变量
}
public static void main(String[] args) {
run();//静态方法不能调用非静态方法,原因是静态的方法和类是一起加载的,在静态方法加载的时候,还没有加载普通的方法
Demo1.go(); //静态方法可以调用静态方法,类中的静态的方法可以不用new对象直接调用
}
}
静态代码块
static关键字不仅可以修饰类的属性,方法还可以修饰一个代码块
public class Demo2 {
//2 赋初始值
{
System.out.println("匿名代码块");
}
//1 只执行1次
static {
System.out.println("静态代码块");
}
//3
public Demo2(){
System.out.println("构造方法");
}
public static void main(String[] args) {
Demo2 demo1 = new Demo2();
System.out.println("===============");
Demo2 demo2 = new Demo2();
}
}
值得注意的是:静态代码块只执行一次,比匿名代码块和构造方法都先执行,静态代码块和匿名代码块可以用来赋初始值。