java中的引用_Java 中的引用和指针

在一些编程场景中,我们常常需要记录下某一个特殊的实例位置(如BST转双向链表题中需要记录最终生成的链表的头节点)。

在使用Java编程过程中,需要注意引用的问题。

class ListNode {

public int val;

public ListNode next;

public ListNode(int _val) {

val = _val;

}

}

public class PointerTestInJava {

public static void main(String[] args) {

ListNode node1 = new ListNode(1);

ListNode node2 = null;

pointerTest(node1, node2);

if (node2 == null) {

System.out.println("node2 is still null!");

} else {

System.out.println(node2.val);

}

}

public static void pointerTest(ListNode node1, ListNode node2) {

node2 = node1;

}

}

打印结果如下:

node2 is still null!

显然pointerTest方法并不能将node1指向node2,作如下的改变:

public class PointerTestInJava {

public static void main(String[] args) {

ListNode node1 = new ListNode(1);

ListNode node2 = new ListNode(2);

pointerTest(node1, node2);

if (node2.next == null) {

System.out.println("node2.left is null!");

} else {

System.out.println("node2.next is " + node2.next.val);

}

}

public static void pointerTest(ListNode node1, ListNode node2) {

node2.next = node1;

}

}

打印结果:

node2.next is 1

此时,node1.left指向了node2. 原因是可把node1.left看做是一个指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值