Java小记——Java中String引用传参

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对引用参数重新初始化了,这样并不能改变外部的字符串,也就失去了引用传参的效果。


猜你喜欢

转载自blog.csdn.net/mingjia1987/article/details/80410662