java之String、StringBuffer、StringBuilder

一、String类:
①。构造字符串对象
常量对象:字符串常量对象是用双引號括起的字符序列。比如:"你好"、"12.97"、"boy"等。
字符串的字符使用Unicode字符编码,一个字符占两个字节
String类较经常使用构造方法:
String  s1 = new String();
String  s2 = new String(String original);
String  s3 = new String(char[] a);
String  s4 =  new String(char[] a,int startIndex,int count)
String str  = “abc”;与String str1 = new String(“abc”);的差别?
str指向一个字符串常量,str1指向堆空间地址,堆空间指向一个字符串常量

String是一个final类,代表不可变的字符序列。字符串是不可变的。一个字符串对象一旦被配置。其内容是不可变的。
②。

字符串对象操作
public int length():返回字符串的长度
public char charAt(int index):返回index索引位置的字符
public boolean equals(Object anObject):推断字符串是否相等
public int compareTo(String anotherString):比較两个字符串的大小,返回两个字符串中不同字符的差
public int indexOf(String s):返回字符串s第一次出现的位置
public int indexOf(String s ,int startpoint):返回字符串s从stratpoint位置以后是第一次出现的位置
public int lastIndexOf(String s):返回字符串s最后一次出现的位置
public int lastIndexOf(String s ,int startpoint)返回字符串s从stratpoint位置以后是最后一次出现的位置
public boolean startsWith(String prefix):返回字符串是否以prefix开头
public boolean endsWith(String suffix):返回字符串是否以suffix结束
public boolean regionMatches(int firstStart,String other,int otherStart ,int length):
推断当前字符串从firstStart開始的子串与还有一个字符串other从otherStart開始,length长度的字串是否equals
public String substring(int startpoint):截取从startpoint位置開始到结尾的子字符串
public String substring(int start,int end):截取从startpoint位置開始到end位置结束的子字符串
pubic String replace(char oldChar,char newChar):
public String replaceAll(String old,String new):用new替换old字符串
public String trim():去除字符串开头和结尾的全部空格
public String concat(String str):连接两个字符串
public String[] split(String regex):依据给定正則表達式的匹配拆分此字符串

③字符串与基本数据的相互转化
 1.字符串 与基本数据类型、包装类之间转换
 ①字符串 --->基本数据类型、包装类:调用对应的包装类的parseXxx(String str);
 ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
 
 2.字符串与字节数组间的转换
 ①字符串---->字节数组:调用字符串的getBytes()
 ②字节数组---->字符串:调用字符串的构造器new String(byte[] b)
 
 3.字符串与字符数组间的转换
 ①字符串---->字符数组:调用字符串的toCharArray();
 ②字符数组---->字符串:调用字符串的构造器new String(char[] c)

 二、StringBuffer类
 java.lang.StringBuffer代表可变的字符序列,能够对字符串内容进行增删。非常多方法与String同样,但StingBuffer是可变长度的。


StringBuffer是一个容器。
①StringBuffer类有三个构造方法:
1.StringBuffer()初始容量为16的字符串缓冲区
2.StringBuffer(int size)构造指定容量的字符串缓冲区
3.StringBuffer(String str)将内容初始化为指定字符串内容  

②StringBuffer类的经常用法
StringBuffer append(String s):在StringBuffer最后加入一个对象
StringBuffer insert(int index, String str) :在指定的位置插入字符串str
public StringBuffer reverse() :反转StringBuffer
StringBuffer delete(int startIndex, int endIndex) :删除从startIndex到endIndex位置的字符
public char charAt(int n ):返回指定索引位置n的字符
public void setCharAt(int n ,char ch):设置指定索引位置n的字符为ch
StringBuffer replace( int startIndex ,int endIndex, String str) :用字符串str替换从startIndex到endIndex位置的字符
public int indexOf(String str):返回str所在位置的索引
public String substring(int start,int end):截取从start到end位置的字符
public int length():返回StringBuffer的长度

三、StringBuilder类
StringBuilder 和 StringBuffer 很类似,均代表可变的字符序列,并且方法也一样
String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

对照String,StringBuffer,StringBuilder三者在加入上的效率:
效率从高究竟: StringBuilde > StringBuffer > String

String text = "";
long startTime = 0L;
long endTime = 0L;
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
buffer.append(String.valueOf(i));}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer的运行时间:"+(endTime-startTime));
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
builder.append(String.valueOf(i));}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder的运行时间:"+(endTime-startTime));
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
text = text + i;}
endTime = System.currentTimeMillis();
System.out.println("String的运行时间:"+(endTime-startTime));

posted on 2017-07-20 09:54  ljbguanli  阅读(120)  评论(0编辑  收藏  举报