public class test{
class asd{
asd(){};
//show();
}
public static void main(String[] arg)
{
asd asdd;//报错语句。
//...
}
}
你的程序是有错误但没有发现你说的错误阿,现在这样可以了

解决方案 »

  1.   

    asd是类,不是变量。
    如果一个对象还没有被实例化,类的静态方法就不能去访问
    非静态成员。
    你在main里可以用String是因为String不属于你的test类,
    而asd是你的类test的内部类(inner class),没有被实例化的情况下,
    静态方法只能访问自己的静态类和静态变量。
      

  2.   

    如果仅仅是
    public static void main(String[] arg)
    {Asd asdd;}
    没问题,但如果是
    public static void main(String[] arg)
    {Asd asdd = new Asd();}
    就有问题了。
    因为Asd是非静态的,没有Test的实例对象,
    就不能存在Asd的实例对象,如果你不想让
    Asd静态,又想在Test历史礼化它,可以这样
    把Asd的实例化放到Test的非静态方法里,
    用一个实例化了的对象去构造Asd,比如构造函数。public class Test{
    Test(){
    Asd a = new Asd();
    }
    class Asd{
    Asd(){};
    }
    public static void main(String[] arg)
    {
    new Test();
    }
    }
    否则,你就只能把它声明成static的
      

  3.   

    刚才说得不严格
    〉没有Test的实例对象,就不能存在Asd的实例对象
    表达能力太差,词不达意,别管这句话了
      

  4.   

    public static void main(String[] arg)
    {Asd asdd;}
    这样也是不行的,(至少它会反应你个没有初始化的错误)
        事实上,在main()里面仅仅允许一个类申明变量,就是test,别的,无论你在什么地方声明的,好象都不行。为什么呢?我不知道。
      

  5.   

    就是可以
    JDK1.3.1+Windows2000(EN)