先来看看参数是如何传递的。
参数的传递
1.基本类型的参数传递
public static void main(String[] args) {
int a = 1;
fun(a);
} private static void fun(int x) {
}
基本类型的参数传递,是直接将实参的值传递给形参。
2.复杂类型的参数传递
public static void main(String[] args) {
User user = new User();
fun(user);
} private static void fun(User x) {
}
Java中参数的传递方式只有一种:值传递。所谓值传递就是将实参值的副本传入方法内,而参数本身不会受到任何影响。
1.参数为基本类型
public class PassValue { public static void main(String[] args) {
int a = 6, b = 9;
swap(a, b);
System.out.println("交换后a=" + a + " b=" + b);// 6,9
} public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
} }
下面是分析图:
2.参数为复杂类型
public class PassValue { public static void main(String[] args) {
Swap s1 = new Swap(1);
Swap s2 = new Swap(2);
swap(s1, s2);
System.out.println("交换后s1.value=" + s1.value + " s2.value=" + s2.value);//2,1
} public static void swap(Swap x, Swap y) {
int temp = x.value;
x.value = y.value;
y.value = temp;
} } class Swap {
public int value; public Swap(int value) {
this.value = value;
}
}
下面是分析图:
面试题
public class PassValue_string { public static void main(String[] args) {
StringBuffer sb = new StringBuffer("hello");
change(sb);
System.out.println(sb);//"hello world"
} public static void change(StringBuffer sb) {
sb.append(" world");
} }
分析如下: