public class TestItem {
private Integer number;
public TestItem(Integer number) {
setNumber(number);
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
}
public class Test {
private static void setTestItem(TestItem item) {
item = new TestItem(2);
}
private static void setTestItemNumber(TestItem item) {
item.setNumber(3);
}
public static void main(String[] args) {
TestItem item = new TestItem(1);
setTestItem(item);
System.out.println(item.getNumber());
setTestItemNumber(item);
System.out.println(item.getNumber());
}
}
以上代码执行结果为:
1
3
结论:
- Java都是按值传递的,如果参数为非基础类型时的类型时,传递过去的是引用地址的值
- setTestItem,setTestItemNumber方法中的item与main方法中的item这三个引用不是同一个对象
- 当引用在方法中重新赋值时,该引用指向另外一个对象,不会影响到main方法中的item指向的对象