String简介
String类主要用来处理字符串,其提供了很多字符串的实用处理方法。它的声明及其成员变量如下:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage、*/
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
可以看到String类被final修饰,其成员变量value[]用来存放字符串,被private final修饰,并且没有提供setter方法,故String是个不可变的类,其对象所包含的字符串内容不会被修改。hash变量用来缓存哈希码,因为该类是不可变的,所以通过缓存哈希码来减少每次计算其哈希码的开销。
阅读更多:为什么String类是不可变的?如何写一个不可变类?
String类的构造方法
1、String():创建一个内容为空的字符串“”。
2、String(String original):构造一个original的副本,即:拷贝一个original。
3、String(char value[]):字符数组参数指定字符串的内容。
4、String(byte bytes[]):根据本地平台默认的字符编码,由字节数组构造一个字符串。
5、String(byte bytes[], Charset charset):根据参数charset指定的字符编码,由字节数组构造一个字符串。
6、String(StringBuffer buffer):通过StringBuffer构造字符串对象。
7、String(StringBuilder builder):通过StringBuilder构造字符串对象。
String类常用的方法
1、char charAt(int index):返回字符串中index位置上的字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。
String string = "ABCDEFGHIJKLMN";
char c = string.charAt(3);//返回D
2、int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
String s = "ABCDEFG";
String s1 = "ABCDXF";
System.out.println(s.compareTo(s1));
//打印-19,因为 (int)'E' - (int)'X' = -19
String s = "ABCDEFG";
String s1 = "ABCD";
System.out.println(s.compareTo(s1));
//打印3
3、String concat(String str) :把字符串str附加到当前字符串的末尾。
String s = "ABCDEFG";
String s1 = "ABCD";
System.out.println(s.concat(s1));
//打印ABCDEFGABCD
4、boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
5、boolean startsWith(String prefix):该String对象是否以prefix开头。
6、boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
7、boolean endsWith(String suffix):该String对象是否以suffix结尾。
8、boolean equals(Object anObject)与boolean equalsIgnoreCase(String anotherString):判断两个字符串的内容是否相同。一个区分大小写一个不区分大小写。
9、void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :从当前字符串中拷贝若干字符到dst[]中,从srcBegin位置开始取字符,到srcEnd-1位置结束,dstBegin为提取的字符存放到字符数组中的起始位置。
String string = "ABCDEFGHIJKLMN";
char[] cs = {'O','O','O','O','O','O','O','O','O','O'};
string.getChars(2, 5, cs, 3);
//结果cs = OOOOCDEOOOO
10、int indexOf(int ch) :只找第一个匹配字符位置。
11、int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
12、int indexOf(String str) :只找第一个匹配字符串位置。
13、int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
String string = "ABCDEFGHIJKLMN";
System.out.println(string.indexOf(70));//返回5
System.out.println(string.indexOf(70, 7));//返回-1
System.out.println(string.indexOf("FG"));//返回5
System.out.println(string.indexOf("FG", 7));//返回-1
14、int lastIndexOf(int ch)
15、int lastIndexOf(int ch, int fromIndex)
16、int lastIndexOf(String str)
17、int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
lastIndexOf(int ch, int fromIndex)方法从字符串fromIndex的位置开始,向前找出第一个匹配的字符的位置,而lastIndexOf(String str, int fromIndex)方法从字符串fromIndex + str.value.length - 1的位置开始向前查找第一个匹配的字符串的位置。
String string = "ABCDEFGHABCDEFG";
System.out.println(string.lastIndexOf((int) 'F'));//返回13
System.out.println(string.lastIndexOf((int) 'F', 5));));//返回5
System.out.println(string.lastIndexOf((int) 'F', 4));));//返回-1
System.out.println(string.lastIndexOf("FG"));));//返回13
System.out.println(string.lastIndexOf("FGHA", 5));));//返回5
System.out.println(string.lastIndexOf("FGHA", 4));));//返回-1
18、int length() :返回当前字符串长度。
19、String replace(char oldChar, char newChar) :将字符号串中所有oldChar替换成newChar。
20、String replaceFirst(String regex, String replacement)跟String replaceAll(String regex, String replacement):把字符串中的regex替换成replacement,replaceFirst方法是替换匹配的第一个,replaceAll方法是替换全部。
21、String[] split(String regex):根据参数regex把原本的字符串分割成几个子字符串。
String s = "what,why,when";
String[] list = s.split(",");
//list = {"what", "why", "when"};
22、String[] split(String regex, int limit):根据参数regex把原本的字符串分割成limit个子字符串。
String s = "what,why,when";
String[] list = s.split(",", 1);
System.out.println(list.length);//打印1
System.out.println(list[0]);//打印what,why,when
String[] list = s.split(",", 2);
System.out.println(list.length);//打印2
System.out.println(list[0]);//打印what
System.out.println(list[1]);//打印why,when
String[] list = s.split(",", 1);
System.out.println(list.length);//打印3
System.out.println(list[0]);//打印what
System.out.println(list[1]);//打印why
System.out.println(list[2]);//打印when
23、String trim():把字符串首尾的空格删除。
String s = " hello ";
System.out.println(s.trim());//打印hello
24、String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
25、String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
26、char[ ] toCharArray() :将该String对象转换成char数组。
27、String toLowerCase() :将字符串转换成小写。
28、String toUpperCase() :将字符串转换成大写。
29、String intern():一个初始时为空的字符串池,它由类 String 私有地维护。 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。 它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。
30、static String valueOf(char c)
31、static String valueOf(char[] data)
32、static String valueOf(char[] data, int offset, int count)
33、static String valueOf(double d)
34、static String valueOf(float f)
35、static String valueOf(int i)
36、static String valueOf(long l)
37、static String valueOf(boolean b)
38、static String valueOf(Object obj)
30~38 用于将各种不同类型转换成Java字符类型。这些都是类方法。