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);
}
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);
}
而你的语句static cup a=new cup(6);相当于实例化类cup,
如果改为cup a=new cup(6);是没问题的
--
首先,静态函数里只能使用静态变量或调用静态函数;
另外,cup的构造函数不是static的,所以不能在static的main()内实现。其次,类的静态变量的声明和上述无关。
static cup a=new cup(6);
就是声明了一个cup对象为静态成员而已。
这就是java的static的语义,就是修饰类的field或者method
像c/c++ 那种允许在方法里面定义,是跟对象没有关系的一个概念,而且要知道c有专门的全局/静态数据区
我觉得是不是因为加载器对static的对象都是首先初始化处理的,所以就不允许在方法中定义static。