zoukankan      html  css  js  c++  java
  • 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

      

      

     
    通过知识/经验的分享,节省开发者的时间.
  • 相关阅读:
    gorm使用小结
    golang 输入输出
    nginx 命令和配置
    设计模式
    并发
    Java教程
    Spring实战
    第12章 高级数据结构及其实现
    第10章 算法设计技巧
    第9章 图论算法
  • 原文地址:https://www.cnblogs.com/ysloong/p/14298839.html
Copyright © 2011-2022 走看看