提示:以下是本篇文章正文内容,下面案例可供参考
一、String类
String类是java中最常用引用类型。用String定义的字符串不可更改。
代码如下(示例):
String str = "天王盖地虎";
System.out.println(str);//天王盖地虎
str.concat(str);//连接字符串,产生新的字符串
System.out.println(str);//天王盖地虎
下面介绍几种常用的定义字符串的形式。
1.String str = “”;
String类中存在一个字符串常量池。当定义一个字符串s1后,会被字符串常量池会缓存,如果再定义一个内容相同的的字符串s2时,当前String类型的引用会指向字符串常量池中,因此字符串s1与字符串s2的地址相同。以这种形式定义的字符串在比较是否相等时可以使用“==”比较。
代码如下(示例):
String s1 = "虎虎生威";
String s2 = "虎虎生威";
System.out.println(s1 == s2);//true
2.String str = new String(original);
使用new关键字,调用String类的有参构造方法,开辟新空间。以这种形式定义的字符串地址不同,因此不能使用“==”比较,可以使用equals()方法比较两个字符串内容是否相等。
代码如下(示例):
String s1 = new String("虎虎生威");
String s2 = new String("虎虎生威");
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true
3.String str = new String(char[] value);
直接传入一个字符数组
代码如下(示例):
char[] c= {'a','b','c'};
String str = new String(c);
System.out.println(str);//输出结果为:abc
4.String str = new String(value, offset, count);
value:传入的字符数组,offset:从当前下标开始,count:传入字符的个数
代码如下(示例):
char[] c= {'a','b','c','d','e'};
String str = new String(c, 2, 2);
System.out.println(str);//输出结果为:cd
5.String str = new String(bytes, offset, length);
bytes:传入的字节数组,offset:从当前下标开始,length:传入字符的个数
代码如下(示例):
byte[] c= {'a','b','c','d','e'};
String str = new String(c, 2, 2);
System.out.println(str);//输出结果为:cd
二、StringBuilder类
StringBuilder类是可变字符串,是AbstractStringBuilder类的子类.StringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是线程不“安全”,但是性能好
代码如下(示例):
StringBuilder stringbuilder = new StringBuilder("天王盖地虎");
stringbuilder.append("小鸡炖蘑菇"); //在当前字符串后,追加字符串"小鸡炖蘑菇"
System.out.println(stringbuilder);//天王盖地虎小鸡炖蘑菇
三、StringBuffer类
StringBuffer类与StringBuilder类都是可变字符串,是AbstractStringBuilder类的子类.唯一不同的是:StringBuffer类中的方法使用synchronized关键字,所以它的方法都是线程“安全”,但是性能差
代码如下(示例):
StringBuffer stringbuffer = new StringBuffer("天王盖地虎");
stringbuffer.append("小鸡炖蘑菇");
System.out.println(stringbuffer);//天王盖地虎小鸡炖蘑菇
总结
String类不可变字符串,StringBuffer类和StringBuilder类都是可变字符串。而StringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是线程不“安全”,但是性能好。StringBuffer类中的方法使用synchronized关键字,所以它的方法都是线程“安全”,但是性能差。