package test;
public class Test02 {
public static void main(String[] args) {
int i=9;
changeVal(i);
System.out.println(i);
Integer j=9;
changeVal(j);
System.out.println(j);
String xx = "123";
changeVal(xx);
System.out.println(xx);
Member m = new Member("123",9);
changeVal(m);
System.out.println(m);
}
public static void changeVal(int i){
i=10;
}
public static void changeVal(Integer i){
i=10;
}
public static void changeVal(String i){
i="abc";
}
public static void changeVal(Member member){
member.setI("abc");
member.setJ(100);
}
}
class Member{
public String i;
public int j;
public Member() {
super();
}
public Member(String i, int j) {
this.i = i;
this.j = j;
}
public String getI() {
return i;
}
public void setI(String i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return i+"_"+j;
}
}
执行结果是:
9
9
123
abc_100
这里int、Integer类型是值传递,方法的参数只是对象的复制,内存地址是不同的,修改的对象也是不同的
Member的传递是引用传递,指向的都是同一个对象