/*
* 1. String,StringBuffer,StringBuilder的区别?
* A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的;
* B:StringBuffer是同步的,数据安全的,效率低的,而StringBuilder是不同步的,数据不安全的,效率高的,
* 两者都可以看作是一个容器,装其他数据。
* StringBufer什么类型都可以放,只是所有类型都变成string类型,最后是一个字符串数据
* 数组可以放多种数据,但是必须是同一种数据类型。
* 3. 形式参数:
* 基本类型:形式参数的改变不用想实际参数。
* 引用参数:引用参数的改变直接影响实际参数。
* String 作为形参传递,效果和基本类型作为参数传递时一样的。
* StringBuffer作为形参传递,除非调用方法才能影响实际参数,否则也无法影响实际参数。
*/
package com.gaowei_08;
/*
* 1. String,StringBuffer,StringBuilder的区别?
* A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的;
*
* B:StringBuffer是同步的,数据安全的,效率低的,而StringBuilder是不同步的,数据不安全的,效率高的,
* 2. StringBuffer和数组的区别:
* 两者都可以看作是一个容器,装其他数据。
* StringBufer什么类型都可以放,只是所有类型都变成string类型,最后是一个字符串数据
* 数组可以放多种数据,但是必须是同一种数据类型。
*
* 3. 形式参数:
* 基本类型:形式参数的改变不用想实际参数。
* 引用参数:引用参数的改变直接影响实际参数。
* String 作为形参传递,效果和基本类型作为参数传递时一样的。
* StringBuffer作为形参传递,除非调用方法才能影响实际参数,否则也无法影响实际参数。
*/
public class StringBuilderDemo {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
System.out.println(s1+"----------"+s2);
change(s1,s2);
System.out.println(s1+"----------"+s2);
System.out.println("-------------------------------");
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println(sb1+"----------"+sb2); //hello----------world
change(sb1,sb2);
System.out.println(sb1+"----------"+sb2);//hello----------worldworld
}
private static void change(StringBuffer sb1, StringBuffer sb2) {
sb1 = sb2;
sb2.append(sb1);
}
private static void change(String s1, String s2) {
s1 = s2;
s2 = s1 + s2;
}
}