public static void main(String[] args) {
int i=1;
String str="hello";
Integer num=100;
int [] arr={1,2,3,4,5};
MyData my=new MyData();
change(i,str,num,arr,my);
System.out.println("i="+i);
System.out.println("str="+str);
System.out.println("num="+num);
System.out.println("my.a="+my.a);
}
public static void change(int j,String s,Integer n,int [] a,MyData m){
j+=1;
s+="world";
n+=1;
a[0]+=1;
m.a+=1;
}
输出结果 为:
i=1
str=hello
num=100
my.a=1
总结:基本数据类型传值是传一个副本,对副本的改变不会影响原来的值,所以i的值没有变化。
String和Integer类型因为是不可变的,在change方法里都会重新在创建一个新的对象然后赋值给change方法里的s和n,所以对原来的值不会有改变,arr是一个数组,引用数据类型传递的是地址值就是说他们共用一个数组,对地址值里的内容改变,所有共用的都读到的是改变后的值,MyData是一个对象,和数组一样。