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)是同一个变量。
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)是同一个变量。
相关文章推荐
- 59,对象作为方法参数传递
- mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法
- 对象作为方法的参数进行连续传递三
- 第02天OC语言(05):对象作为方法参数分析
- Objective-C - 对象作为方法的参数
- Javascript:提取 对象的方法作为高阶函数的参数 要注意的
- OC 对象作为方法的参数和返回值传递
- 深入理解带参方法-----对象作为参数的方法
- 对象作为方法的参数进行连续传递一
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- iOS基础之OC:对象作为对象方法的参数
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
- OC 对象作为方法的参数连续传递
- C# 实例对象作为参数传递与方法内部的形参关系
- 对象作为方法的参数
- 对象作为方法的参数连续传递
- Java 把对象作为参数传到一个方法里,这个是值传递还是引用传递, 为什么结果这么怪?
- c# - 外部对象作为参数调用方法时需要注意的问题
- 对象作为方法的参数连续的传递
- Java之把String对象作为方法的参数