两者最大的区别是:immutable和mutable.
调用String的方法返回的永远是一个新的String。调用该方法的对象是不会改变的。但是StringBuilder的对象调用方法可以改变StringBuilder本身。
利用StringBuilder搭建好String后,可以利用new String(StringBuilder strb)来创建一个最终的String.
下面罗列String常用的方法(多用多记):
Sting的构造器:String (char[] val); String (String str); String(StringBuffer, buffer); String(StringBuilder builder); 当然,还有一个非常实用的:String(char[] val, int offset, int count); 设置偏移量和长度之后可以直接截取char array的一部分作为字符串。
char charAt(int index);
String是实现了Comparable的,所以里面有int compareTo(String str); 字典比较
int compareToIgnoreCase(String str)
boolean startWith(String prefix) or boolean startWith(String prefix, int offset);
boolean endWith(String suffix)
equals and equalsIgnoreCase(String str);
对比String在构造器当中可以用String(char[] array, int offset, int length)来截取字符数组的一部分来创建String,而String类型对象除了可以使用toCharArray()转换为字符数组外,还能使用getChars(int begin, int end, char[] dst, int dstBegin) 来获取对应的一部分String.
搜索字符时最常用的:
indexOf(char target, int fromIndex) 和 indexOf(char target)
indexOf(String str, int fromIndex) 和 indexOf(String str)
以及对应的
LastIndexOf(char target, int fromIndex) 和 LastIndexOf(char target)
LastIndexOf(String str, int fromIndex) 和 LastIndexOf(String str)
如何判断是否有重复字符?
看看indexOf和lastIndexOf返回的值是否一样。
替代该字符串中所有出现的target字符串且返回替代后的String?
String res = replaceAll(String target, String replaceStr);
替代该字符串中第一个出现的target字符串且返回替代后的String?
String res = replaceFirst(String target, String replaceStr);
去子字符串:
String substring(int begin) or String substring(int begin, int end); //前闭后开
去掉开头和结尾空格
trim() -- 返回一个去掉开头和结尾空格的String.
所有的字符变为大写或者小写?
toLowerCase() and toUpperCase
将其它的基本类型和字符数组变为String:
String.valueOf(float tmp) and etc.
下面罗列StringBuilder常用的方法(多用多记):
下面重点来了,StringBuilder是没有用char array作为参数的带参构造器的。Java的quiz就考过这样的题了。
有以下的带参构造器:StringBuilder(int capacity)和StringBuilder(String str)。
常用的几个方法:
所有的基本类型 + String 和 char[] 的append. 对于char[]还有:append(char[] array, int offset, int len);
还有delete(int start, int end) 和 deleteCharAt(int index);
还有insert (int offset, primitive var); 所有的基本类型 + String 和 char[],对于char[] 同样有:int offset, int len
还有setChar(int index, char ch);
同样的,和String有一样的如下方法:replace(int start, int end, String str), indexOf, lastIndexOf, charAt, getChars.