书中提到:
- Java 程序设计语言总是采用按值调用
基本类型:
引用类型:
这种行为与 Go 类似. 主要要区分基本类型和引用类型.
书中举了例子来说明常见的错误: Java 方法参数是引用类型
- 方法内部的交换对外层不起作用
自己写的测试用例:
package chapter04;
import java.time.LocalDate;
import java.util.Objects;
public class Employee {
private String name;
private double salary;
private LocalDate hireDay;
public Employee(String n, double s, int year, int month, int day) {
name = Objects.requireNonNull(n, "The name cannot be null");
salary = s;
hireDay = LocalDate.of(year, month, day);
}
public String getName() {
return name;
}
public static void Exchange(Employee x, Employee y) {
Employee tmp = x;
x = y;
y = tmp;
}
}
public class Main {
public static void main(String[] args) {
Employee employee1 = new Employee("abc", 123.03, 2021, 4, 28);
Employee employee2 = new Employee("def", 123.03, 2021, 4, 28);
Employee.Exchange(employee1, employee2);
System.out.println(employee1.getName()); // abc
System.out.println(employee2.getName()); // def
}
}
如果非要实现对外层进行交换, 那么参数的类型应该是
指针的指针
,