Java的传递采用的是值传递、没有引用传递。
在基本类型为参数的传递中,只是传递的值改变,本身并未改变
public class Test {
public static void main(String[] args) {
int a = 1;
changeBasicType(a);
System.out.println("result:"+a);
}
private static void changeBasicType(int a){
a++;
}
}
结果:
result:1
在数组的传递中,改变
public class Test {
public static void main(String[] args) {
int a [] ={1,3};
changeArray(a);
System.out.println("result:"+a[0]);
}
private static void changeArray(int a []){
a[0] = 6;
}
}
结果:
result:6
(在数组引用的赋值,如int a[],b[]; b={1,2}; a=b; a[0] =3;其中b[0]=3,他们引用改变对象)
在传递的值是引用传递,改变的只是值,而不会改变对象的hashcode,也就是不改变对象的引用
public class Test {
public static void main(String[] args) {
A aObject = new A();
System.out.println(aObject.hashCode());
changeObject(aObject);
System.out.println(aObject.a);
System.out.println(aObject.hashCode());
}
private static void changeArray(int a []){
a[0] = 6;
}
private static void changeObject(A a){
a.a =2;
A b = new A();
a = b;
}
}
class A{
int a=1;
}
结果:
25860399
2
25860399