所有java的方法调用本质上都是值传递,也就是说函数的形参的值只是实参的一个副本,关键在于形参和实参是什么类型的(是基本类型还是对象句柄,因为如果形参是对象句柄,那么所传递的这个副本就是对象句柄的副本,而不是对象句柄所指向的副本)。
eg1:
public class Print
{
public static void main(String[] args)
{
String str = new String("World");
char ch[] = {'H','e','l','l','o'};
change(str, ch);
System.out.print(str + " and ");
System.out.print(ch);
}
public static void change(String str, char ch[])
{
str = "Change";
ch[0] = 'C';
}
}
输出:World and Cello。
eg2:
public class Print
{
public static void main(String[] args)
{
String str = new String("World");
char ch[] = {'H','e','l','l','o'};
change(str, ch);
System.out.print(str + " and ");
System.out.print(ch);
}
public static void change(String str, char ch[])
{
str = "Change";
ch = new char[]{'c','e','l','l','o'};
}
}
输出:World and Hello。