Class A
{
}
Class B
{
   
   A a1=new A();   A a2;
   a2=new A();  public static void main(String[] args)
  {  }
}
为什么
A a2;
a2=new A();
会不对?
它和
A a1=new A();
有什么区别吗?

解决方案 »

  1.   

    a2=new   A(); 
    在类一级没有这样的语法,如果你想初始化,需要采用
    A   a2; 
    {
      a2=new   A(); 
    }
      

  2.   

    在类里面除了方法和属性的声明就是代码块.
    要么是声明的同时赋值,如同: "A a1 = new A();" 
    要么是只声明不赋值,如同: "A a2;" 那么这个属性取默认值.
    要么是一段代码块,如同:
    {
      a2 = new A(); 
    }而 "a2 = new A();" 不是方法,不是属性的声明,不是代码块...当然就报错了...
      

  3.   

    a2=new   A(); 
    这句话你写到外面去了,执行不了的。
      

  4.   

    来解释下,混饭吃的!讲得能理解就散点分:
    [code]
    Class   A
    {
    }
    Class   B
    {
         
          A   a1=new   A();  //这里定义一个成员他的访问属性是默认(可以是public,private吧?),并且初始化它      A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
          a2=new   A();//非法,不认识的代码,    public   static   void   main(String[]   args)//定义类的方法吧?
        {    }
    }
    好到这里我要说下类的定义规则了,就是java的语法啦:
    首先说明类名,在定义他有那些属性(也就是成员变量啦),在就是定义类的方法(也就是类的成员函数啦),基本的就怎么多吧,
    好在回来看看你这里:
     A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
     a2=new   A();//非法,不认识的代码,(你这里是定义什么呢,还是想怎么样啊?)
    在来看你写对了的:
    A   a1=new   A(); //这里定义一个成员他的访问属性是默认(可以是public,private吧?),这里只不过是你把类的成员变量出示化了(好java比c++特殊了,java中说明了可以这样给类的成员初始化)在说说吧:
    其实A   a1=new   A()这样的写法我们是很少写的,我们更喜欢吧类自己的成员初始化放到他的构造函数里去哦。
    [/code]
      

  5.   

    来解释下,混饭吃的!讲得能理解就散点分:
    [code]
    Class   A
    {
    }
    Class   B
    {
         
          A   a1=new   A();  //这里定义一个成员他的访问属性是默认(可以是public,private吧?),并且初始化它      A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
          a2=new   A();//非法,不认识的代码,    public   static   void   main(String[]   args)//定义类的方法吧?
        {    }
    }
    好到这里我要说下类的定义规则了,就是java的语法啦:
    首先说明类名,在定义他有那些属性(也就是成员变量啦),在就是定义类的方法(也就是类的成员函数啦),基本的就怎么多吧,
    好在回来看看你这里:
     A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
     a2=new   A();//非法,不认识的代码,(你这里是定义什么呢,还是想怎么样啊?)
    在来看你写对了的:
    A   a1=new   A(); //这里定义一个成员他的访问属性是默认(可以是public,private吧?),这里只不过是你把类的成员变量出示化了(好java比c++特殊了,java中说明了可以这样给类的成员初始化)在说说吧:
    其实A   a1=new   A()这样的写法我们是很少写的,我们更喜欢吧类自己的成员初始化放到他的构造函数里去哦。
    [/code]
      

  6.   

    怎么回复了没反应啊,没显示出啦:
    ??
    来解释下,混饭吃的!讲得能理解就散点分:Class   A
    {
    }
    Class   B
    {
         
          A   a1=new   A();  //这里定义一个成员他的访问属性是默认(可以是public,private吧?),并且初始化它      A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
          a2=new   A();//非法,不认识的代码,    public   static   void   main(String[]   args)//定义类的方法吧?
        {    }
    }
    好到这里我要说下类的定义规则了,就是java的语法啦:
    首先说明类名,在定义他有那些属性(也就是成员变量啦),在就是定义类的方法(也就是类的成员函数啦),基本的就怎么多吧,
    好在回来看看你这里:
     A   a2;  //这里定义一个成员他的访问属性是默认(可以是public,private吧?)
     a2=new   A();//非法,不认识的代码,(你这里是定义什么呢,还是想怎么样啊?)
    在来看你写对了的:
    A   a1=new   A(); //这里定义一个成员他的访问属性是默认(可以是public,private吧?),这里只不过是你把类的成员变量出示化了(好java比c++特殊了,java中说明了可以这样给类的成员初始化)在说说吧:
    其实A   a1=new   A()这样的写法我们是很少写的,我们更喜欢吧类自己的成员初始化放到他的构造函数里去哦。