Java引用指针 publicstaticvoidmain(字符串[]args) { 类树{ int值; 树枝; } int a[]=新int[]{0,1,2}; 树[]对象树=新树[a.length+1]; 对于(int j=0;j

Java引用指针 publicstaticvoidmain(字符串[]args) { 类树{ int值; 树枝; } int a[]=新int[]{0,1,2}; 树[]对象树=新树[a.length+1]; 对于(int j=0;j,java,Java,在循环中,您为t分配一个值,它只是objTree中null值的副本。更改t不会更改objTree中数组元素的值——一旦值复制到t,它们是两个独立的不相关值。您需要使用traditi对于循环,例如 for(Tree t:objTree) { t=new Tree(); t.value=5; t.branches=new Tree[5]; for(int i=0;i<t.branches.length;i++){ t.branches[0]=ne

在循环中,您为
t
分配一个值,它只是
objTree
null
值的副本。更改
t
不会更改
objTree
中数组元素的值——一旦值复制到
t
,它们是两个独立的不相关值。您需要使用traditi对于循环,例如

for(Tree t:objTree)
{
    t=new Tree();
    t.value=5;
    t.branches=new Tree[5];
    for(int i=0;i<t.branches.length;i++){
        t.branches[0]=new Tree();
    }
}
objTree[0].value=4;
应该是

t.branches[0]=new Tree();

指针在Java中不是一个术语!@GrijeshChauhan它应该是,因为这是您(听说过
NullPointerException
?);)指向OP的内容:您得到该异常的原因只有一个:
objTree[0]
null
。当然。在较低的代码中,您从不定义objTree。在较高的代码中,您在循环的第一行定义objTree。该术语实际上定义为:“引用值(通常只是引用)是指向这些对象的指针,以及一个特殊的null引用,它不指向任何对象。”
for(int j=0; j<objTree.length; ++j) {
        Tree t=new Tree();
        t.value=5;
        t.branches=new Tree[5];
        ...
        objTree[j] = t;
}
t.branches[0]=new Tree();
t.branches[i]=new Tree();