String和StringBuilder作为方法参数的区别
来源:互联网 发布:js闭包的理解 编辑:程序博客网 时间:2024/06/08 08:54
String作为方法参数:
public class StringTest { public static void main(String[] args) { String s1 = new String("string"); change(s1); System.out.println(s1); } public static String change(String s){ s += "test"; return s; }}
输出结果s1并未改变。
执行过程:
首先在堆中创建对象string,栈中存储s1,也就是s1对象的引用地址。调用方法时,形参s也指向堆中相同的对象。执行s += "test"后,将会堆中创建另一个String对象,将该对象的地址复制给栈中的形参s1,所以在方法里面s1和s相互独立的,指向不同的对象,s1并未改变。
StringBuilder作为方法参数:
public class StringBuilderTest { public static void main(String[] args) { StringBuffer s1 = new StringBuffer("Hello"); StringBuffer s2 = new StringBuffer("Hello"); changeStringBuffer(s1, s2); System.out.println("s1=" + s1); System.out.println("s2=" + s2); } public static void changeStringBuffer(StringBuffer ss1, StringBuffer ss2) { ss1.append(" world"); ss2 = ss1; ss2.append("aa"); }}
输出结果:
s1=Hello worldaas2=Hello
首先知道s1和s2是不相等的,指向堆中两个不同的StringBuilder对象。下面这张图可以很好解释s2未改变的原因。
总结:
String为不可变对象,对其进行操作将生成不一样的对象。
StringBuilder为可变对象,可以直接在原对象上面进行操作。StringBuilder作为方法参数时其实就是传递引用地址。
阅读全文
0 0
- String和StringBuilder作为方法参数的区别
- String和StringBuilder作为参数的区别
- 作为函数参数时String和String[]数组的区别
- StringBuilder对象作为方法的参数
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- StringBuilder 和 String 的区别?
- StringBuilder 和 String 的区别
- String 和 StringBuilder的区别
- String 和 StringBuilder 的区别
- string 和stringbuilder的区别
- string 和stringbuilder的区别
- StringBuilder和String的区别
- string 和 StringBuilder 的区别
- string 和stringbuilder的区别
- string 和 stringBuilder的区别
- 最全Pycharm教程(9)——创建并运行一个基本的Python测试程序
- tebsorflow学习——tf.train.ExponentialMovingAverage与tf.train.exponential_decay
- Python 2.7.x 和 3.x 版本的重要区别
- systat(统计分析软件) v13.1免费版下载及安装教程
- Java开发环境搭建(进阶配置三 ——MySQL)
- String和StringBuilder作为方法参数的区别
- Unity3D 打包后UI失效(FindGameObjectsWithTag)
- 菜鸡学习之插入排序------学习算法记录1
- POJ 1200 Crazy Search(哈希)
- 抽象类与接口
- adoop Error: java.io.IOException: Unable to initialize any output collector
- 你应该知道的RPC原理
- Hadoop中的zookeeper
- 关于 u3d 接入支付宝的补充