今天又被困惑了。把一个String传进一个函数去修改。却发现在函数外并没有修改成功。String s = "abcd";
t2(s);
System.out.println(s);在t2中改变参数的值
public static void t2(String ss){
ss = ss+ "xxx";
}
打印出来的是 abcd请问传参数到底是按值拷贝一份还是相当于C++的引用那样传?
t2(s);
System.out.println(s);在t2中改变参数的值
public static void t2(String ss){
ss = ss+ "xxx";
}
打印出来的是 abcd请问传参数到底是按值拷贝一份还是相当于C++的引用那样传?
class haha
{
public static void main(String[] args)
{
String s = "abcd";
System.out.println(t2(s));
}
public static String t2(String ss){
ss = ss + "xxx";
return ss;
}
}
你修改的事局部成员变量,而且有没有把修改后的字符串放回给源字符串变量。
举个C++例子voud main () {
char* a = "test";
change(a);
cout<<a<<endl;
}void change(char* a) {
a = "123"; //改变函数内部指针的指向不影响外部的指针指向
//只有改变指针指向的内容,函数外部的指针指向的内容才会有变化
}
如果LZ能理解这个,就能理解java了,不再多解释