cup是一个class,为什么定义静态的对象不能在main里面。而在main外面却可以?class cup{
cup(int er){
System.out.println("cup("+er+")");
}
}
public class Test {

    public static void main(String[] args) {
     static cup a=new cup(6);  //出错
     //System.gc();
    }
    static cup a=new cup(6);
}

解决方案 »

  1.   

    static 修饰的是类变量或者类方法,只能放在类定义里面,接口里面也可以用,但是不能放在方法里面.不要受C /C ++之类的语言影响.
      

  2.   

     static cup a=new cup(6);这种情况就是Test的类变量了.
      

  3.   

    static是定义变量,\
    而你的语句static cup a=new cup(6);相当于实例化类cup,
    如果改为cup a=new cup(6);是没问题的
      

  4.   

    为什么定义静态的对象不能在main里面。而在main外面却可以? 
    --
    首先,静态函数里只能使用静态变量或调用静态函数;
    另外,cup的构造函数不是static的,所以不能在static的main()内实现。其次,类的静态变量的声明和上述无关。
    static cup a=new cup(6);
    就是声明了一个cup对象为静态成员而已。
      

  5.   

    不能
    这就是java的static的语义,就是修饰类的field或者method
    像c/c++ 那种允许在方法里面定义,是跟对象没有关系的一个概念,而且要知道c有专门的全局/静态数据区
      

  6.   

    今天看了Java的初始化及类的加载,了解了这个过程我就明白了为什么不能把在方法里定义static了。
    我觉得是不是因为加载器对static的对象都是首先初始化处理的,所以就不允许在方法中定义static。