java之String、StringBuffer、StringBuilder

来源:互联网 发布:化学分子式软件 编辑:程序博客网 时间:2024/05/21 10:54

一、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));

0 0
原创粉丝点击