黑马程序员技术交流社区
标题:
请教一个StringBuffer 问题
[打印本页]
作者:
莫运飞
时间:
2012-4-7 02:26
标题:
请教一个StringBuffer 问题
class Foo
{
public static void main(String[] sgf)
{
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
}}
//输入的结果如何才能变成AB,AB
//而不是AB,B
作者:
姜志钦
时间:
2012-4-7 07:47
class Foo
{
public static void main(String[] sgf)
{
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
StringBuffer B= operate(a,b);
System.out.println(a+","+B);
}
static StringBuffer operate(StringBuffer x,StringBuffer y)
{
y= x.append(y); //这边x连接y变为AB,而y没有改变 所以还是B
return y;
}
}
复制代码
作者:
翟友伟
时间:
2012-4-7 08:13
System.out.println(a+","
+b
);
这里你自己定义的是 b
最后怎么可能不是 B呢?
除非 是 在定义个 c = operate(a,b);
System.out.println(a+","+c);
作者:
郑强强
时间:
2012-4-7 08:22
StringBuffer a;和StringBuffer b;这两个变量是定义在main方法中的局部变量,只在main方法内部的代码范围内有效。
StringBuffer x, StringBuffer y这两个变量是operate方法的参数,也属于局部变量,只在operate方法内部的代码范围有效。
所以当值分别为“A”和“B”的StringBuffer对象传入operate方法时,后面简称为A对象和B对象,由于java中采用引用传递,即只是将原A、B对象的引用赋给了局部变量x、y而不是复制一份新的对象,所以x.append(y)直接修改了原A对象的值,变成了“AB”;(而y=x操作是将局部变量y作为了A对象的引用,但B对象仍旧是B对象(值已经被修改成BA),并没有变成A对象,只是局部变量的指向发生了改变)。此时operate方法运行结束,operate方法中的局部变量xy被销毁。继续回到main方法运行,main方法中的a、b局部变量仍分别指向A对象(值已经变成AB)和B对象,此时打印a、b,输出为AB,B。
作者:
黑马张平
时间:
2012-4-7 08:25
学习学习!!
作者:
邓飞飞
时间:
2012-4-7 08:39
class Foo
{
public static void main(String[] sgf)
{
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
StringBuffer c= operate(a,b);
System.out.println(a+","+
c
);
}
static
StringBuffer
operate(StringBuffer x,StringBuffer y)
{
y=x.append(y);
return y;
}}
作者:
liuqingqian
时间:
2012-4-7 09:25
我想楼主想要的是这个效果:
/**
*
*/
/**
* @author kilo
* @createdate 2012-4-7
*/
public class TestStringBuffer {
/**
* @author kilo
* @createdate 2012-4-7
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a + "," + b);
}
static void operate(StringBuffer x, StringBuffer y)
{
String temp = x.toString();
x.append(y);
y.insert(0, temp);
}
}
复制代码
作者:
pray
时间:
2014-4-26 03:46
让斑竹看后决定加精固顶的好帖
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2