日期:2014-05-20  浏览次数:20816 次

菜鸟问题之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