public class D{
 static int a=4;
   static void map(){
   D c=new D();

}
public static void main(String args[]){
System.out.println(D.a);
map();
}
}
我搞不懂为什么这样也行?
结果为 4.

解决方案 »

  1.   

    很正常啊,D类得a是静态的。可以通过类名.变量名来直接访问的啊。不需要先实例化的。map是个静态方法,不要类名直接访问。可能是静态导入吧
      

  2.   

    static int a=4;
    a是D类的静态属性静态属性就这么用,有什么问题吗?
      

  3.   

    晕 main() 方法就在D类内部当然可以直接用刚刚看错了
      

  4.   

    被static所修饰的变量称为静态变量,它的特点是:
    1.静态变量是归这个类所有的,无论这个类被实例化多少次,这个变量只有一个,就是说不存在this.a这种用法;
    2.静态变量因为直接附属于这个类,所以,虚拟机在编译的时候就已经给它一块内存了,Java语法规定,静态变量可以直接用类名访问,为什么可以这样规定,因为世界上只有一个a,无论实例化多少次,所以,干嘛还要那么麻烦的用对象来访问呢?其次,LZ发的代码中,main方法在类D中,main方法虽然特殊,但也是个方法,而且要注意,是个静态方法,静态方法的特点:在同一个类里,静态方法只能调用静态方法,如果要调用普通方法,那么就要new出对象LZ的代理里,如果map方法是个普通方法,那么就不能那么写,而要new D().map();
    我也是个Java初学者,以上为自己理解的总结,有错误的话,请大家指出,共同进步
      

  5.   

    你的main方法就在D内如,而map方法又是静态的,当然可以啦