String、StringBuffer和StringBuilder

String表明不可变的字符序列是一个终态类不能被继承。字符串是常量声明以后不能改变其值。api

      在对String类型的对象进行操做时好比使用+对字符串拼接是会产生新的对象。这就会对字符串的操做效率大大下降。当须要频繁修改字符串时,不建议用String类。数组

      对字符串比较时,不建议使用“==”,而是用equals()方法。在String类中,已经对equals()从新。安全

StringBuffer:是可变的字符序列,是线程安全的,同步的。它在对字符串进行操做时,使用的是append()方法,在字符串的后面追加字符串,可是不产生新的对象。这样对字符串操做的效率较高。在Java中若是对字符串进行大量的操做,建议使用 StringBuffer多线程

StringBuilder:是可变的字符序列,不是线程安全的,不一样步。它与StringBuffer相似,可是不是线程安全的,效率很高,用在字符串缓冲区被单个线程使用的时候,建议优先采用该类。将 StringBuilder 的实例用于多线程是不安全的。若是须要这样的同步,则建议使用 StringBufferapp

String s1 = newString(”hello”);ide

String s2 = newString(”hello”);ui

String s3 = “hel”;spa

String s4 = “lo”;.net

String s5 = s3+s4;线程

String s6 = “hel”;

System.out.println(s1 == s2);//false,指向的不是同一个对象。

System.out.println(s3 == s6);//true

System.out.println(s1 == s5);//false s5产生的是一个新的对象。

Java中使用(==)来比较,对于基本数据类型比较的是其变量的值,对于引用数据类型比较的是变量的引用地址。

String 类中经常使用的方法

intcompareTo(String value): 指定者:接口 Comparable 按字典顺序比较两个字符串。若是两个字符串相等,则返回 0;若是字符串在参数值以前,则返回值小于 0;若是字符串在参数值以后,则返回值大于 0

public int length(),字符串的长度

public char charAt(int index),返回一个在字符串中索引是indexchar类型的字符。此方法能够将一个字符串转换成char类型的数组。同时,也可使用new String(char[] ch)char类型的数组,在String声明时转换成一个字符串。

boolean startsWith(Stringvalue)   检查一个字符串是否以参数字符串开始。

booleanendsWith(String value)检查一个字符串是否以参数个字符串结束。

public int indexOf(int ch)返回指定字符ch在此字符串中第一次出现处的索引值;若是未出现该字符,则返回 -1

public int indexOf(int ch, int fromIndex) fromIndex - 开始搜索的索引

public int lastIndexOf(intch)   返回最后一次出现的指定字符在此字符串中的索引值;若是未出现该字符,则返回 -1

public int lastIndexOf(Stringstr)   返回最后一次出现的指定子字符串str在此字符串中的索引值;若是未出现该字符串,则返回 -1

public String substring(intindex)提取从位置索引index开始直到此字符串末尾的这部分子字符串

public String substring(intbeginIndex, int endIndex)提取从 beginindex开始直到 endindex(不包括此位置)之间的这部分字符串

public String concat(Stringstr)  将指定字符str串联接到此字符串的结尾成为一个新字符串返回。

public String replace(charoldChar, char newChar)      返回一个新的字符串,它是经过用 newChar 替换此字符串中出现的全部 oldChar 而生成的。

public String trim() 返回字符串的副本,忽略前导空白和尾部空白

public String toUpperCase();   将此字符串中的全部字符都转换为大写

public String toLowerCase();   将此字符串中的全部字符都转换为小写

public int length()得到此字符串的长度

StringBuffer:经常使用的方法

StringBuffer append(Stringstr):将指定的字符串追加到此字符序列

StringBuffer insert(intoffset, String str)   将字符串str插入此字符序列指定位置中。

int length( ):肯定 StringBuffer 对象的长度

void setCharAt(int pos, charch)    使用 ch 指定的新值设置 pos指定的位置上的字符

String toString( )转换为字符串形式

StringBuffer reverse()    反转字符串

StringBuffer delete(intstart, int end)   此方法将删除调用对象中从start 位置开始直到 end 指定的索引 1 位置的字符序列

StringBuffer deleteCharAt(intpos)     此方法将删除 pos 指定的索引处的字符

StringBuffer replace(intstart, int end, String s):此方法使用一组字符替换另外一组字符。将用替换字符串从 start 指定的位置开始替换,直到end 指定的位置结束

StringBuilder的用法和StringBuffer的用法是一致的。了解更详细的请看官方文档,或者在线查看http://tool.oschina.net/apidocs/apidoc?api=jdk-zh Java API 文档

2017-11-30 new String的内存分配过程。

相关文章
相关标签/搜索