java String的一个疑问

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:21:08
有这么个简单的程序

class TestStr{

public static void main(String [] args){
TestStr ts = new TestStr();
String str = "oldStr";
ts.init(str);
System.out.println(str);
}
public void init(String str){
str = "newStr";
}

}
大家都知道,String是引用类型,那么ts.init(str);将句柄str传到init方法中,而init方法将str赋值"newStr",理论上应该是这样的吧,可是实际上输出的却是"oldStr",本人做java开发快一年,这个问题却百思不得其解,难道是钻牛角尖了?我很疑惑,到底是哪一步我想错了,望高手指点。

虽然String是引用类型,不过进行函数调用时还是进行的值传递。
就我现在了解的java数组是可以进行真正引用传递的,像C语言中的指针传递一样。比如下面代码,就会输出newStr
class TestStr
{

public static void main(String [] args){
TestStr ts = new TestStr();
String str = "oldStr";
String []a=new String[2];
a[0]=str;
ts.init(a);
str=a[0];
System.out.println(str);
}
public void init(String []str){
str[0] = "newStr";
}

}

...你写的方法貌似有点问题

class TestStr{

public static void main(String [] args){
TestStr ts = new TestStr();
String str = "oldStr";
ts.init(str);
System.out.println(str);
}
public void init(String str){
this.str = "newStr";
}

}

我这头没工具 你看看加上this之后有没有效果?