菜鸟问题之NO.2--------静态变量和方法问题
import javax.swing.*;
class Demo9 {
static int a;
public Demo9(){
a=1000;
}
public static void printa(){
JOptionPane.showMessageDialog(null,Integer.toString(Demo9.a));
}
public static void main(String[] args) {
System.out.println(Demo9.a);---------------------第一句
Demo9 demo= new Demo9();
System.out.println(demo.a);
Demo9.printa();-----------------------------第二句
}
}
结果:0
1000
弹出窗口:1000
问题:为什么第一和第二句的结果会不一样。
------解决方案-------------------- System.out.println(Demo9.a);---------------------第一句
这是a是静态属性 因为在执行这个方法的时候 没有有实例化类(也就是调用构造函数)
所以这时候a的值为默认值0
Demo9 demo= new Demo9(); //调用构造函数 a等于1000了
System.out.println(demo.a);
Demo9.printa();-----------------------------第二句
已经实例化对象了
所以a=1000