String:是一个使用比较多的一个类,是一个被final修饰的类,不能被继承,String对象是一个常量,被创建后,它的值不能被改变,可以使用+来连接,实际采用的是StringBuffer的append方法进行连接。
length():获取字符长度
isEmpty():如果为空,返回true,否则false
charAt(int index):获取String中char[]中的第offset+index字符(offset为偏移量)
equals(Object obj):比较两个字符串是否相等,重写了Object中的equals(Object obj)
contentEquals(StringBuffer):比较字符串内容是否相等
equalsIgnoreCase(String):忽略大小比较字符串
startsWith(String,String):判断是否以某个字符串开头
endsWith(String,String):判断是否以某个字符串结束
indexOf(int):返回第一次出现字符的位置
substring(int):从某个位置开始到最后截取字符串
concat(String):将字符串连接在一起
replace(char old,char new):替换搜有old的字符,并返回一个新的字符串
split(String regex):按照regex对字符串进行切分,返回一个字符串数组
trim():去掉前后的空格默认大小16
下面String、StringBuffer、StringBuilder的连接性能对比
String:
public class StringTest { public static final int COUNT = 100000; public static void main(String[] args) { long begin = System.currentTimeMillis(); String str = ""; String temp = "hello"; for(int i=0; i<COUNT; i++) { str+=temp; } long end = System.currentTimeMillis(); System.out.println(end - begin); } }StringBuffer:
public class StringBufferTest { public static final int COUNT = 100000; public static void main(String[] args) { long begin = System.currentTimeMillis(); StringBuffer str = new StringBuffer(); String temp = "hello"; for(int i=0; i<COUNT; i++) { str.append(temp); } long end = System.currentTimeMillis(); System.out.println(end - begin); } }StringBuilder:
public class StringBuilderTest { public static final int COUNT = 100000; public static void main(String[] args) { long begin = System.currentTimeMillis(); StringBuffer str = new StringBuffer(); String temp = "hello"; for(int i=0; i<COUNT; i++) { str.append(temp); } long end = System.currentTimeMillis(); System.out.println(end - begin); } }
22886ms 13ms 14ms
21983ms 12ms 14ms
22012ms 15ms 14ms
22847ms 14ms 14ms
23002ms 16ms 15ms
22676ms 13ms 14ms
22578ms 15ms 16ms
22326ms 14ms 13ms
21961ms 14ms 13ms
22446ms 15ms 13ms
平均时间: 22471.7ms 14.1ms 14.0ms
可以看到StringBuffer、StringBuilder比String的效率高。