• 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

      

      

     
    通过知识/经验的分享,节省开发者的时间.
  • 相关阅读:
    PHP 布尔类型
    php连接到数据库
    php_2
    php_1
    iOS开发之APP导入添加自定义字体
    iOS开发之判断横竖屏
    iOS开发之iPhone手机屏幕尺寸整理
    iOS开发之关闭暗黑模式
    iOS开发之iOS13推送deviceToken处理
    iOS开发之UIView和CALayer的区别
  • 原文地址:https://www.cnblogs.com/ysloong/p/14298839.html
Copyright © 2020-2023  润新知