静态变量与实例变量的定义与区别:
静态变量需要关注的点:
静态方法与实例方法的定义与区别:
简述一下类的加载机制
public class Student {
static int a = test(); //直接调用静态方法,只能调用静态方法
Student(){
System.out.println("构造类对象");
}
static int test(){ //静态方法刚加载时就有了
System.out.println("初始化变量a");
return 1;
}
}
思考:下面这种情况下,程序能正常运行吗?如果能,会输出什么内容?
public class Student {
static int a = test();
static int test(){
return a;
}
public static void main(String[] args) {
System.out.println(Student.a);
}
}
输出结果为0。
定义和赋值是两个阶段,在定义时会使用默认值(上面讲的,类的成员变量会有默认值)定义出来之后,如果发现有赋值语句,再进行赋值,而这时,调用了静态方法,所以说会先去加载静态方法,静态方法调用时拿到a,而a这时仅仅是刚定义,所以说还是初始值,最后得到0