当依靠方法给成员变量赋值时,有可能会犯以下错误。
class Node{
public Node(String str){
data=str;
}
Node next;
String data;
@Override
public String toString() {
return data;
}
}
public class NodeNext {
public static Node FuZhi(Node node){
node=new Node("New Node");
return node;
}
public static void main(String[] args) {
Node node1=new Node("node1");
Node temp=FuZhi(node1.next);
System.out.println("node1.next= "+node1.next);
System.out.println("temp= "+temp);
}
}
输出结果为
node1.next= null
temp= New Node
可能会有人疑惑为什么node1.next的值是null,这是因为将node1.next传入到方法FuZhi中时,仅仅只传入了一个node对象,方法并不知道它与node1的联系。可在Node类中重写一个为next赋值的方法,然而最简单的处理方法就是将FuZhi修改一下,见下面的代码
public static void FuZhi2(Node node){
node.next=new Node("new Node");
}
测试一下
public static void main(String[] args) {
Node node1=new Node("node1");
FuZhi2(node1);
System.out.println("node1.next= "+node1.next);
}
输出
node1.next= new Node
成功。总结一下,若要给一个对象的成员变量直接赋值,要用 对象.成员变量= 的形式。