返回信息流public class test_3 {
public static void stringReplace(String text) {
text = text.replace('j', 'L');
}
public static void bufferReplace(StringBuffer text) {
text = text.append("c");
}
public static void main (String args[]) {
String textString = new String("java");
String a = "javafhjsf";
String X = a.replace('j', 'X');
StringBuffer textBuffer = new StringBuffer("java");
stringReplace(textString);
stringReplace(a);
bufferReplace(textBuffer);
System.out.println(textString);
System.out.println(a);
System.out.println(textBuffer);
System.out.println(X);
}
}
输出为:
java
javafhjsf
javac
XavafhXsf
我是不太明白为什么我在stringReplace方法中调用replace方法没用效果呢?请教达人解答
这是一条镜像帖。来源:北邮人论坛 / java / #17020同步于 2010/12/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
请教一个java的问题
rongshao2008
2010/12/30镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 xiaohaozi 的大作中提到: 】
: String的特点是一旦赋值,便不能更改其指向的字符对象,如果更改,则会指向一个新的字符对象 。
: --
明白了,谢谢
【 在 rongshao2008 的大作中提到: 】
: public class test_3 {
: public static void stringReplace(String text) {
: text = text.replace('j', 'L');
: ...................
问题在于 text = text.replace('j', 'L'); 此处text值已更改了,但text是局部变量,并没有把改变后的值传回调用函数。String对象是经过特殊处理的,有点类似字面值常量,每次变值,都会重新生成一个新的String对象(有一种String常量池机制)。
lz这样试试:
public class CallAFunctionWithoutReturn{
public static String replaceFunction(String textToTreat)
{
textToTreat = textToTreat.replace('j', 'L');
return textToTreat;
}
public static void main(String[] args)
{
String testText1 = "java";
testText1 = replaceFunction(testText1);
System.out.print(testText1);
}
}