Java中参数传递的本质还是值传递(静态方法中将对象置为空 为什么打印时对象还存在?)
1 静态工具方法
public class RedisLockUtils {
public static void getLockFail(Order order){
order = null;
}
}
2 main方法调用静态方法
public static void main(String[] args) {
Order order = new Order();
order.setPayOrderNo("222");
RedisLockUtils.getLockFail(order);
System.out.println(order);
}
3 打印结果
Order{orderNo='null', payOrderNo='222'}
为什么打印结果对象有数据而不是null呢?
结论
当order = null;时其实是将内部的order指向一个新的地址(空对象地址)
但是不会对原来的对象产生影响.
public static void getLockFail(Order order){
order.setOrderNo("333");
// 指向了新的地址值 null
order = null;
System.out.println(order);
}
打印结果:
null
Order{orderNo='333', payOrderNo='222'}
参考来源:
https://www.cnblogs.com/sum-41/p/10799555.html
通过知识/经验的分享,节省开发者的时间.

浙公网安备 33010602011771号