1、引言
在学习C语言时,我们就已经了解了字符串,但是在C语言中字符串只能用字符数组或者指针来表示,没有特定的字符串类型,而在Java中,我们有了字符串这一特定的类型---String类。
2、String类的常用方法
2.1 字符串的构造方法
在我们定义一个字符串的时候,我们可以使用以下常用的三种方法:
1.通过双引号直接定义
2.通过new对象来定义
3.通过字符数组来定义
public class Test {
public static void main(String[] args) {
//1.通过双引号直接定义
String s1 = "abc";
//2.通过new对象来定义
String s2 = new String("abc");
//3.通过字符数组来定义
char[] arr = {'a','b','c'};
String s3 = new String(arr);
}
}
2.1.1【注意事项】 String类是一个引用类型
要知道String类是一个引用类型,并非字符串本身:
我们通过调试可以看到,String类中有着四种成员变量,而只有value数组中存储着字符串的值,
在String的源码中,也确实有着四种实例变量:
在这里我们只考虑value数组,因为value数组中存储着字符串的内容。
由于String是一个引用类型,在内存中有着以下的存储模式:
2.2 字符串间的比较方法
2.2.1 引用变量存储的值(地址)是否相同
我们已知字符串是引用变量,使用“==”来比较所引用的对象是否为同一份:
2.2.2 字符串的内容是否相同
在Object类中的equals方法与“==”的作用相同,而String类重写了equals方法,用来比较字符串中的内容是否相同:
2.2.3 比较字符串的大小
我们点过去String类的源码,可以看到String类也实现了Comparable接口,
说明重写了compareTo方法,我们利用compareTo方法来比较字符串的大小(相同返回0,大于返回正数,小于返回负数):
Java中方法多样,当我们想忽略大小写来比较时,我们可以调用compareToIgnoreCase方法:
2.3 String类的查找方法
2.3.1 charAt方法
我们可以通过这个方法来找到字符串中某一下标的字符:
注释:与数组不同,在字符串中计算字符串长度调用的是length方法。
2.3.2 indexOf方法
通过这个方法,我们可以查找(从前往后查找)到某一字符或字符串第一次出现的位置的下标,在String类中,有多个重载的方法,我们可以查找字符,也可以查找字符串。其中fromIndex参数是从指定下标开始查找:
2.3.3 lastIndexOf方法
顾名思义,lastIndexOf方法是从后往前查找某个字符或字符串,我们也可以指定位置从后往前查找:
2.4 与字符串有关的转换方法
2.4.1 数值和字符串的转换
我们可以通过valueOf方法来将数值转换为字符串:
通过相应数字的包装类型来将字符串转换为数字:
2.4.2 大小写转换
2.4.3 字符串和数组的转换
利用这个方法,可以直接将字符串转换为字符数组:
同样,字符数组也可以通过valueOf方法转换为字符串:
若是整形或其他类型数组,使用Arrays类中的toString方法:
2.4.4 对象转字符串
我们可以通过valueOf方法来将对象转换为字符串(重写toString方法):
2.5 字符串的拆分方法
我们可以以某个字符为分割线,将字符串分割为若干个字符数组:
我们也可以以多个字符来分割,用 | 符号来连接:
注意:
当以字符"|","*","+","."来分割时,前面需要加上转义字符"\\",
而以"\"来分割时,需要写成"\\\\"(在字符串中就是"...\\...",因为为转义字符不能单独出现,"\\"来代表一个"\")
如下图所示:
2.6 字符串的截取方法
我们通过这个方法,可以截取所想要的子字符串(传入下标之后的子串,也可以指定范围)
代码演示:
1.
我们截取了3下标以后的子串(包括3下标):
2.
我们可以截取指定范围的子串,但注意:所给出的范围是左闭右开!!!
2.7 字符串的替换方法
1.
用一个新字符替换掉字符串中的某个旧字符:
2.
用新字符串替换掉字符串中的旧的子字符串:
3.
替换掉第一个出现的旧子字符串:
4.
替换所有出现的子字符串:
我们发现,使用replace替换字符串和使用replaceAll替换字符串的效果是相同的。
2.8 去除空白字符方法
我们可以利用这个方法来去除字符串开头和结尾(内部的无法去除)的空白字符(空格, 换行, 制表符等)。
OK~本次博客到这里就结束了,
感谢大家的阅读~欢迎大家在评论区交流问题~
如果博客出现错误可以提在评论区~
创作不易,请大家多多支持~