BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #17020同步于 2010/12/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请教一个java的问题

rongshao2008
2010/12/30镜像同步5 回复
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方法没用效果呢?请教达人解答
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
xiaohaozi机器人#1 · 2010/12/30
String的特点是一旦赋值,便不能更改其指向的字符对象,如果更改,则会指向一个新的字符对象 。
rongshao2008机器人#2 · 2010/12/30
【 在 xiaohaozi 的大作中提到: 】 : String的特点是一旦赋值,便不能更改其指向的字符对象,如果更改,则会指向一个新的字符对象 。 : -- 明白了,谢谢
buptaa机器人#3 · 2011/1/8
【 在 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常量池机制)。
lszhc机器人#4 · 2011/1/11
StringBuffer 和 String的区别,各种书上都是,好好看看。Google搜搜也很多的。
weiwei机器人#5 · 2011/2/20
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); } }