public class TestString{
public static link(String a){
a += "World";}
public static void main(String[] args){
String a = "Hello";
link(a);
System.out.println(a);
}
}
最后显示是Hello; 不是已经调用了link了吗?为什么“world”没有加上去。为什么输出的字符串还是原来的那个呢?请大家仔细的给我解答一下,谢谢
public static link(String a){
a += "World";}
public static void main(String[] args){
String a = "Hello";
link(a);
System.out.println(a);
}
}
最后显示是Hello; 不是已经调用了link了吗?为什么“world”没有加上去。为什么输出的字符串还是原来的那个呢?请大家仔细的给我解答一下,谢谢
变量a还是原来的Hello
a += "World";
System.out.println(a)}
这样输出就是hello world了
你调用link函数相当于
String a = "Hello";
String b = a;
b += "World";
也就是说它把“Hello”传进去了(是值!),而不是把a传进去
所以a未被修改
a+=" World";
}
return a+"World"
}
System.out.println(link(a));
所以没有输出你想要的结果
public static link(String a){
a += "World";}
public static void main(String[] args){
String a = "Hello";
link(a);
System.out.println(a);
}
}LZ 先从主函数main 入手。定义一个string形的a,并且赋值“Hello”。调用like方法,将a传递给link(String a)方法。(其实这个问题的重点是参数传递,参数传递的实质是对象副本的传递,也就说你将a传递给了like()方法,虽然在此方法中将a+="World",但a的实质没有发生任何改变,也就是说a的副本发生了改变,而a的本身没有发生任何改变).如果是这样的话 a就会发生改变(我简单举个例子):
public class TestString{
public static link(char a[]){
char[0]='w';
}
public static void main(String[] args){
char a[] ={'h','e'}
link(a[]);
System.out.println(a);
}
}
输出的将是 we,而不是he