黑马程序员技术交流社区
标题:
StringBuffer的问题
[打印本页]
作者:
姜佳文
时间:
2014-8-5 20:42
标题:
StringBuffer的问题
public class StringTest{
public static void changeString(String s)
{
s = "456";
s = s.concat("456");
}
public static void changeStringBuffer(StringBuffer s)
{
StringBuffer t = new StringBuffer("456");
s = t;
}
public static void main(String args[])
{
String m = "123";
changeString(m);
System.out.println(m);
System.out.println("change m = " + m);
System.out.println("m = " + m);
StringBuffer n = new StringBuffer("123");
changeStringBuffer(n);
System.out.println("n = " + n);
}
}
代码如上,为什么最后输出的不是“n=456”?而是“n=123”??
作者:
zhouqun
时间:
2014-8-5 21:06
调用了函数 changeStringBuffer(n),函数进栈之后所属栈区又创建了一个字符串缓冲区对象的值赋值给s,等方法一出栈,打印的还是主函数里面的n,就是字符串缓冲区里面的字符串。
作者:
小黑子
时间:
2014-8-5 21:57
额……我表示我技术还不达标…………
作者:
依然超级赛亚人
时间:
2014-8-5 22:12
你定义了n=”123“之后,把它作为参数传到了方法 changeStringBuffer()中,只是用了一下n而已,相当于把n复制一份传到changeStringBuffer()中,并没有对n进行其他修改操作啊,当然还是原值。如果在changeStringBuffer()中写一个输出s的语句再调用它的话,这时会是”456“。
作者:
王凯路路
时间:
2014-8-5 22:23
你只是调用方法运算,修改的是你方法里n的值, 并没有修改主函数里面n的值,在主函数里当然还是123
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2