java小记:Java中String引用传参
我们知道在java中字符串(Stirng)对象和其他对象不太一样,是不可变的,所以再作为参数传递的时候和基本类型一样,都是“值传参”,要想达到“引用传参”的效果,就要使用StringBuffer/StringBuilder。
值传参和引用传参的例子就不过多废话了,网上随便都可以查到,可能需要注意的一点就是,在引用传参的函数中,对字符串进行修改的时候绝对不能是对参数再次初始化(new),简单看个例子:
public static void main(String[] args){
StringBuffer sbr = new StringBuffer("test");
System.out.println(sbr.toString());
testStringParam1(sbr);
System.out.println(sbr.toString());
testStringParam2(sbr);
System.out.println(sbr.toString());
}
public static void testStringParam1(StringBuffer sbr){
//修改引用参数
sbr.delete(0,sbr.capacity()).append("test111");
}
public static void testStringParam2(StringBuffer sbr){
//从新初始化引用参数
sbr = new StringBuffer(sbr.append("222"));
}
一个方法(testStringParam1),引用参数被改成了“test111”,此时在main方法中字符串已经从“test”变成了“test111”;
第二次输出是调用第二个方法(testStringParam2),在该方法使用new对引用参数重新初始化了,这样并不能改变外部的字符串,也就失去了引用传参的效果。