先看代码
public class StringBuffera {
public static void main(String[] args)
{
StringBuffer bf1 = new StringBuffer(“hello”);
StringBuffer bf2 = new StringBuffer(“java”);
test(bf1,bf2);
System.out.println(bf1+”….”+bf2);
}
public static void test(StringBuffer bf1,StringBuffer bf2)
{
bf1.append(bf2);
bf1=bf2;
System.out.println(bf1+”….”+bf2);
}
}
输出结果为java….java
public class StringBuffera {
public static void main(String[] args)
{
StringBuffer bf1 = new StringBuffer(“hello”);
StringBuffer bf2 = new StringBuffer(“java”);
test(bf1,bf2);
System.out.println(bf1+”….”+bf2);
}
public static void test(StringBuffer bf1,StringBuffer bf2)
{
bf1.append(bf2);
bf1=bf2;
System.out.println(bf1+”….”+bf2);
}
}
输出结果为java….java
hellojava….java
这时候问题就来了,为什么在主方法的打印结果里 bf1等于hellojava(bf1调用test后的结果)。却不等于bf2将引用传给bf1的值呢? 原来啊StringBuffer属于String的增强版,StringBuffer bf2这里是局部变量,将bf1=bf2只能在test这个方法里生效,这个test方法结束后,变量就消失了,所以并不影响主方法的打印结果
版权声明:本文为qq_41885010原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。