这是什么声明的?

时间:2013-10-31 02:11:11

标签: java class

public class Neat {

    public Neat asdf;
}

这会成为Neat类的对象吗?我正在尝试学习链接列表,如果有帮助的话。

我不知道如何谷歌这个,抱歉。

4 个答案:

答案 0 :(得分:3)

这将创建一个名为Neat的类,该类声明一个名为asdf的{​​{1}}类型的成员变量。成员变量Neat是对asdf的引用。

此代码不会创建对象null

的实例

答案 1 :(得分:0)

这声明了Neat类型的字段。所以Neat对象将有一个子Neat字段。

 Neat n = new Neat();
 n.asdf = new Neat();

答案 2 :(得分:0)

这是一个具有成员变量的类,该变量与类的类型相同。在这种情况下,这是完全合法的,但它可能是危险的。例如,如果您将代码更改为仅实例化变量

public Neat asdf = new Neat();

然后在其他地方创建Neat,您的程序将以StackOverflowError崩溃,因为每个实例都会创建一个新实例,从而创建一个新实例,依此类推。就目前而言,您的程序会创建一个引用变量,但不会创建实例,因此不会创建更多实例。

答案 3 :(得分:0)

public class Neat {

public Neat asdf; //Focus here

public static void main(String...string){
    Neat n = new Neat();
}
}

不,它不会创建一个对象,它只是一个可能具有Neat类对象的变量 但

public class Neat {

public Neat asdf = new Neat(); //Focus here

public static void main(String...string){
    Neat n = new Neat();
}
}

它会产生尽可能多的Neat对象并最终导致StackOverFlow ......