package com.dada.test;
public class Test {
//按值传递就是把当前的值重新复制一份给另外的一个参数,
//然后两个参数各自拥有各自的值,彼此互不影响
//按引用传递是把当前的引用给复制一份给另外的参数,
//而两者共同的拥有这个对象,彼此的修改都会影响到对方
//java中基本类型的参数传递的是按值传递
//java中对象传递的是对象的引用而不是对象的本身
//实际上引用的传递就可以说成是 赋值号的传递,只是让方法里面的
//参数也拥有了和当前的对象相同的引用而已
public static void main(String[] args) {
Person p = new Person("dada", 26);
Test t = new Test();
System.out.println("未修改\t"+p);
t.change2(p);
System.out.println("第一次修改\t"+p);
//这个地方说明的是我这里传递的是对象的引用而不是对象本身
//因为如果我传递时对象的本身的话,那么这个对象在这个方法里面已经换成了另外的对象了
//而打印的结果应该是那个新对象的结果,可是事实上他打印的还是被change2()修改后的结果
t.change1(p);
System.out.println("第二次修改\t"+p);
int i = 10;
//这里也不一样的,它传递的是值,而不是引用,如果是引用的话,那么打印的应该是100
t.changeI(i);
System.out.println(i);
}
private void change1(Person p){
p = new Person();
p.setAge(4);
p.setName("tongtong");
}
private void change2(Person p) {
p.setName("hehe");
p.setAge(3);
}
private void changeI(int j){
j = 100;
}
}