【问题标题】:Array Object and Ordinary object Initialization数组对象和普通对象初始化
【发布时间】:2016-10-07 00:18:31
【问题描述】:

我有 3 个对象 root1,root2,root3,它们存在于 root[](数组对象)中,这是一个对象集合。

我已经使用root[0] 初始化了Node 类。所以 我可以通过root[0].data 访问Node 类的值,但我希望root1.data 也应该访问同一个类,因为root[0]=root1,但我无法访问该值。

为了实现我的逻辑,我需要做些什么吗? 我有以下程序:

class a
{
static Node root1,root2,root3;
public static void main(String args[])
{
Node root[]={root1,root2,root3};
for(int i=0;i<root.length;i++)
    root[i]=new Node(value,null);
    System.out.println(root[i].data);//It is printing Correctly
    System.out.println(root1.data);//It is printing null value

}
public static class Node
{
 int value;
 Node next;
 Node(int value,Node next)
    {
        this.value=value;
        this.next=next;
    }
}
}

【问题讨论】:

  • 这段代码不能编译,更不用说像描述的那样运行了。 value 是什么? temp 是什么?它如何为通过空指针到达的字段打印空值?

标签: java arrays


【解决方案1】:

我有 3 个对象 root1,root2,root3

不,你没有。你有三个变量,它们都是空的。

他们在root[]中的位置

root[] 中除了初始化时的三个空值外,什么都不存在。

我已经使用 root[0] 初始化了 Node

您已实例化Node 类,并将引用存储到root[0]

// It is printing null value.

使用此代码应该会抛出 NullPointerException

root[0]=root1

不,它没有。您在循环中覆盖了它,并且在任何情况下,当您进行(毫无意义的)数组初始化时,root1 为空,因为您没有对其进行初始化。

【讨论】:

  • 对不起,它是一个 root[i]=new Node(value,null);而不是 root[i]=new temp(value,null);
  • 别告诉我:解决你的问题。还有其他一些问题。
猜你喜欢
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2017-02-16
  • 2017-02-18
  • 2011-09-02
  • 1970-01-01
相关资源
最近更新 更多