一.String类(后续再补上StringBuffer类的讲解)
1.构造函数(仅列出常用构造函数)
1)public String();
2)public String(byte[] bytes);将字节数组转换为字符串。
3)public String(byte[] bytes, int index, int length);将字节数组的一部分转换为字符串。
4)public String(char[] value, value);将字符数组转换为字符串。
5)public String(char[] value, int offset, int count);将字符数组的一部分转换为字符串。
2.常用方法
这些方法就不一一列举,为了更好的理解这些方法的作用,我把它按照功能分类,在下边进行仔细讲解。
一)判断功能(关于字符串是否为空,是否相同等一系列判断)
关于判断,所以以下方法的返回值类型都为boolean。
1)boolean equals(Object obj);比较内容是否相同,区分大小写。
2)boolean equalsIgnoreCase(String str);比较内容是否相同,不区分大小写。
3)boolean startWith(String str);判断该字符串是否是以指定字符串开头。
4)boolean endsWith(String str);判断该字符串是否是以指定字符串结尾。
5)boolean contains(String str);判断(大)字符串是否包含指定(小)字符串。
6)boolean isEmpty();判断是否为空。
注意:这些方法可以用一个用户登录案例来验证。
二)获取功能(字符串长度,指定索引字符以及字符串截取等等)
1)public int length();获取字符串长度。
2)public charAt(int index);获取指定索引处的字符。
3)public int indexOf(int ch);获取指定字符在该字符串中第一次出现处的索引(注意参数int类型)。
4)public int indexOf(String str);获取指定字符串在该字符串中第一次出现处的索引。
5)public int indexOf(int ch, int formIndex);获取从指定位置后指定字符在该字符串中第一次出现处的索引(注意参数int类型)。
6)public int indexOf(String str, int formIndex);获取从指定位置后指定字符串在该字符串中第一次出现处的索引。
7)public String substring(int start);将字符串从指定位置截取到末尾。
8)public String substring(int start,int end);将字符串从指定位置截取到指定位置(注意end不包括在内)。
注意:
a)如public char charAt(int index);此类所传参书命名为index的方法,index一律从0开始计数。
b)在3)和5)方法中用int类型传入字符,为了应用性能更广。
c)在8)方法传入的参数,注意包前不包后,即:左闭右开区间。
d)在7)和8)中注意方法名substring小写。
三)其他功能
1)替换
String replace(char old, char new);
String replace(String old, String new);
2)去空格(去除两端的空格)
String trim();
3)按字典顺序比较
int compareTo(String str);
int compareToIgnoreCase(String str);
注意:返回值数据类型int,返回第一个字符的ASCII值差值(前-后);若第一个字符相同,则比较第二个,依次类推;若比较结束仍相同,则返回s1.length - s2.length的值。
4)字符串遍历
使用public char charAt(int ch);配合for循环即可。
四)注意!!!(误区总结)
1)字符串直接赋值的方式,如String s = “hello”;先到方法区中的字符串方法区去找,若有则直接返回,若无则创建并返回。关于JAVA中方法区和常量池的讲解转自
2)字符串一旦被赋值就不能改变(注意哦,这里是值不能变,而不是引用),具体见下图解。
3)两种赋值的区别:
String s1 = “hello”;
String s2 = new String(“hello”);
前者创建了一个对象,创建一个对象直接指向方法区,即上图所示;后者创建了两个对象,先创建了一个对象指向堆内存,再创建一个对象指向方法区。
4)字符串拼接
字符串常量相加时,先加再去常量池里找,有则返回,无则创建;
字符串变量相加时,先开空间,再拼接。
注意:==和equals()的区别,体现在字符串这两种拼接方式。