一.String
1.String类是不可变的。
例如:
String s = "Google";
System.out.println("s = " + s);
s = "Runoob";
System.out.println("s = " + s);
输出结果为:
Google
Runoob
于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = “Runoob”; 创建了一个新的对象 “Runoob”,而原来的 “Google” 还存在于内存中。
2.常用的方法
使用如:str.charAt(8);
char charAt(int index):返回字符串索引出的值,索引范围为从 0 到 length() - 1。
String concat(String str1):把一个字符串连接到另一个字符串的末尾
int length():返回字符串长度
int indexOf(int ch)/int indexOf(String str):返回指定字符/字符串在此字符串中第一次出现处的索引。不存在则返回-1
int indexOf(int ch, int fromIndex): 返回指定字符在字符串中第一次出现处的索引,fromIndex为开始搜索的索引位置。
int lastIndexOf(ch): 返回指定字符在此字符串中最后一次出现处的索引。
boolean matches(String regex):是否匹配正则表达式
String[] split(String regex):根据给定字符的匹配拆分此字符串。结果为数组。
char[] toCharArray():将此字符串转换为一个新的字符数组。
String trim(): 忽略前导空白和尾部空白。
static String valueOf(primitive data type x):返回给定data type类型x参数的字符串表示形式。
String replace(char oldChar, char newChar):通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replaceAll(String regex, String replacement):使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
boolean startsWith(String prefix, int toffset):是否以某一字符串开始,toffset字符串中开始查找的位置,不写的话默认0。
String substring(int beginIndex, int endIndex):截取字符串,beginIndex – 起始索引(包括)。
endIndex – 结束索引(不包括),不写的话默认到最后。
String toLowerCase()/ toUpperCase():转换成大小写
length()方法,length属性和size()的方法的区别:
1.length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
2.length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性;
3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
二.StringBuffer与StringBuilder
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
方法描述
1 public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2 public StringBuffer reverse()
将此字符序列用其反转形式取代。
3 public delete(int start, int end)
移除此序列的子字符串中的字符。
4 public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。
5 replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
三.String与Stringbuffer/StringBuilder的比较:
String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的
concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!
- String 长度大小不可变
- StringBuffer 和 StringBuilder 长度可变
- StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快(使用较多)
参考:http://www.runoob.com/java/java-string.html
http://www.runoob.com/java/java-stringbuffer.html