Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义String,每个用双引号括起来的字符串都是String类的一个实例。
1 子串
String类的substring方法可以从一个较大的字符串提取出一个子串。例如:
String str=”Hello”;
String sub=str.substring(0,3);
Substring方法的第二个参数是不想复制的第一个位置。
2 检测字符串是否相等
可以使用equals方法检测两个字符是否相等。例如:
s.equals(t);
如果相等返回true,否则返回false。
3 代码点与代码单元
Java字符串由char序列组成。
字符数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如:
String str=””Hello;
int n=str.length(); //n is 5
调用s.charAT(n)将返回位置n的代码单元,n介于0~s.length()-1之间。例如:
char first = str.charAt(0); //first is ‘H’
4 String StringBuffer StringBuilder
String(JDK1.0时代) 不可变字符序列
StringBuffer(JDK1.0时代) 线程安全的可变字符序列
StringBuilder(JDK1.5时代) 非线程安全的可变字符序列
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。
StringBuilder是1.5新引入的,其前身就是StringBuffer。StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。
用法对比:
经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。
String s1="Heart";
String s2="Raid";
String str="";
str=s1
StringBuilder temp=new StringBuilder(s1),
temp.append(s2);
str=temp.toString();