Java是值传递(pass-by-value)还是引用传递(pass-by-reference)?
The parameter passing mechanism in Java is pass-by-value
example:
public class Test {
public static void main(String[] args) {
testa a = new testa();
a.a=1;
testa b = new testa();
b.a = 13;
a.next = b;
fool(a);
System.out.println(a.a);
System.out.println(a.next);
}
static void fool(testa a){
a.a = 10;
a.next = null;
}
}
class testa {
int a;
testa next;
}
输出:
10
null
public class Test {
public static void main(String[] args) {
testa a = new testa();
a.a=1;
testa b = new testa();
b.a = 13;
change(a,b);
System.out.println(a.a);
System.out.println(b.a);
}
static void change(testa a, testa b){
testa tmp = a;
a.a = 12;
b.a = tmp.a;
}
}
class testa {
int a;
testa next;
}
输出:
12
12
public class Test {
public static void main(String[] args) {
testa a = new testa();
a.a=1;
testa b = new testa();
b.a = 13;
change(a,b);
System.out.println(a.a);
System.out.println(b.a);
}
static void change(testa a, testa b){
testa tmp = a;
a.a = b.a;
b.a = tmp.a;
}
}
class testa {
int a;
testa next;
}
输出:
13
13
public class Test {
public static void main(String[] args) {
testa a = new testa();
a.a=1;
testa b = new testa();
b.a = 13;
change(a,b);
System.out.println(a.a);
System.out.println(b.a);
}
static void change(testa a, testa b){
testa tmp = a;
a = b;
b = tmp;
}
}
class testa {
int a;
testa next;
}
输出:
1
13