您的位置:首页 > 产品设计 > UI/UE

StringBuilder对象作为方法的参数

2016-10-12 12:35 246 查看
源代码1:

public class Experiment11
{
public static void main(String[] args)
{
String s="java";
StringBuilder builder=new StringBuilder(s);
String s2=change(s);
StringBuilder builder2=change(builder);
System.out.println(s);
System.out.println(s2);
}
private static String change(String s1){
s1=s1+" and HTML";
return s1;
}
private static StringBuilder change(StringBuilder builder1){
builder1.append(" and HTML");
return builder1;
}
}运行结果:



运行结果说明在参数传递的时候,String类型的变量传递的过程是(以以上例子为例):先开辟一个方法储存区,并在方法储存区建立一个String类型的变量s1,再将类中的String类型变量s的值传递给s1,即进行操作s1=“java“”;则方法中的语句操作的对象是s1,并不是对s进行操作,所以在类中输出结果s并没有变;

而StringBuilder类型变量传递的过程是:先开辟一个方法储存区,然后在方法储存区中建立一个StringBuilder类型变量builder2,再将类中的StringBuilder类型变量builder的地址传递给builder1,即进行操作builder1=builder;则方法中操作的对象是builder1,同时也是builder,因为此时变量builder、builder1指向的是同一个对象,所以在类中输出的结果builder的结果被改变了。

注意:

  .总结地来说,String变量类型参数传递的是变量的值,而StringBuilder变量类型参数传递的是变量的地址。

二.进一步推即为:s与s2(s1)不是同一个变量,builder与builder2(builder1)是同一个变量。



源代码2(证明上述结论):

public class Experiment11
{
public static void main(String[] args)
{
String s="java";
StringBuilder builder=new StringBuilder(s);
String s2=change(s);
StringBuilder builder2=change(builder);
System.out.println(s);
System.out.println(s2);
System.out.println(s==s2);
System.out.println(builder);
System.out.println(builder2);
System.out.println(builder==builder2);
}
private static String change(String s1){
s1=s1+" and HTML";
return s1;
}
private static StringBuilder change(StringBuilder builder1){
builder1.append(" and HTML");
return builder1;
}
}

运行结果:



输出结果表明:s和s2(s1)不是同一个变量,builder和builder2(builder1)是同一个变量。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  StringBuilder