Java只有值传递-相关证明

先放结论:
java只有值传递,即使是引用类型也是拷贝一份引用地址作为值

代码

public static void main(String[] args) {
        UserDTO userDTO = new UserDTO();
        userDTO.setId(0);
        userDTO.setName("main");
        pass1(userDTO);
        System.out.println(userDTO);
    }

    private static void pass1(UserDTO userDTO) {
        userDTO.setId(2);
        System.out.println("pass1:"+userDTO);
    }

控制台输出:
在这里插入图片描述

代码2:

public static void main(String[] args) {
        UserDTO userDTO = new UserDTO();
        userDTO.setId(0);
        userDTO.setName("main");
        pass2(userDTO);
        System.out.println(userDTO);
    }
    private static void pass2(UserDTO userDTO) {
        userDTO = new UserDTO();
        userDTO.setId(3);
        userDTO.setName("pass2");
        System.out.println("pass2:"+userDTO);
    }

控制台输出:
在这里插入图片描述

如果是引用传递,代码2的输出应该是ID=3 Name=pass2,由此可见,调用方法时,形参只是复制的引用地址,真正的引用地址并不会改变~

发布了328 篇原创文章 · 获赞 23 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lbh199466/article/details/103822841
今日推荐