先放结论:
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,由此可见,调用方法时,形参只是复制的引用地址,真正的引用地址并不会改变~