目录:
3)、indexOf(char ch,int from)方法:
5)、indexOf(String str, int from)方法:
编辑 7)、lastIndexOf(char ch, int from)方法:
8)、 lastIndexOf(String str)方法:
9)、lastIndexOf(String str, int from)方法:
1)、replace(char oldchar, char newchar)方法:
2)、replaceFirst(String old,String new)方法:
3)、replaceAll(String old,String new)方法:
1)、删除某位置 deleteCharAt(int index)方法:
2)、删除某位置到某位置 delete(int start, int end):
4、从某位置到某位置替换成某个String字符串 replace:
一、常用的方法:
1、字符串的构造:
对于String类的构造方法,对于常见的有3种构造方法:
注意:
1、String 是引用类型内部并不存储字符长本身。
2、在Java中 “” 引起来的也是String类型的对象。
public class Test {
public static void main(String[] args) {
//"hello"是String类型
System.out.println("hello".length());
}
}
2、String类型的比较:
1)、== 的比较:
== 比较的是是否引用同一个对象,对于内置类型来说,== 比较的是变量中的值,对于引用类型来说,== 比较的是引用中的地址。
我们可以看到我们的上面的代码当中,String类型使用 == 比较的是地址,而不是内容。
那我们想要在String类的引用类型当中,比较String的内容的话,那么我们要如何才能做到?
我们使用equals关键字 。
2)、equals方法的比较:
为什么在String类型当中equals就可以直接调用,而在之前我们在使用时都要重写equals方法?这是因为,在String的底层中,已经把equals方法重写了。
所以我们可以直接使用equals这个关键字。
3)、compareTo()的比较方法:
对于 == 和 equals 方法来说呢,它们的返回值都是boolean类型的,都是关于是否相等的,那么我们有没有是关于字符串大小的比较,返回的是int类型的呢?当然有,对于compareTo方法就是。
我们直接看例子: 对于compareTo方法呢,有两个规则:
1、按照字典的顺序比较,如果出现不等的字符,那么返回他们的差值。
2、如果比较的前k个相同,也就是对于短的字符串比较完了,而长的还没比较完,那么返回它们的长度的差值
4)、compareToIgnoreCase()比较方法:
这个方法和compareTo方法没有什么差别,但是忽略大小写比较。
3、字符串查找:
1)、charAt(int x)方法:
这个方法是根据输入的x值,来返回字符串x这个下标的值。如果是负数或者越界,就会报错。
2)、indexOf(char ch)方法:
这个方法是返回 ch 出现在字符串当中的第一次出现的位置,如果没有找到ch 则返回-1。
返回值为 int 类型
3)、indexOf(char ch,int from)方法:
这个方法和上面的方法比较相似,但是这个方法是从from这个位置上开始找的。
4)、indexOf(String str)方法:
这个是返回 st r第一次出现的位置,没有找到返回-1。
5)、indexOf(String str, int from)方法:
这个方法和上面的方法是一样的道理,我就不详细讲解了,直接看代码:
6)、lastIndexOf(char ch)方法:
这个方法和上面介绍的方法很相像,只不过这个方法是从后往前找。
7)、lastIndexOf(char ch, int from)方法:
直接看代码:
8)、 lastIndexOf(String str)方法:
和前面的一个道理,直接看代码就可以了:
9)、lastIndexOf(String str, int from)方法:
直接代码:
4、转化:
1)、数值和字符串之间的转化:
在下面这个代码中的Integer和Double统一称为包装类,这个东西我们在后面介绍。
2)、大小写之间的转换:
这个呢,就非常的简单了,我们直接看代码:
3)、字符串转换成数组:
我们也是同样之接看代码:
4)、格式化:
5、字符串的替换:
就是把旧的字符串替换成新的字符串的方法,就是替换。对于替换我们有几种方法,我们来看:
1)、replace(char oldchar, char newchar)方法:
把oldchar替换成newchar字符,我们来看代码:
2)、replaceFirst(String old,String new)方法:
把字符串当中的第一个old字符替换成new这个字符。 我们来看看代码是什么样的。
3)、replaceAll(String old,String new)方法:
这个呢就是把所有的old字符都改成new字符。
6、字符串的拆分:
可以将一个完整的字符串按照指定的分割符将其进行拆分成若干个子字符串。
注意:
1、 有一些的字符需要特殊记忆一下,它们需要转义字符 "\\",那么都有哪些字符呢?
都有:“|” ,“*”,“+” ,“.”等,在前面都得加上“\\”。但是对于 “\” ,那么我们要写成 “\\\\” 。
2、 如果有有多个分隔符,可以使用"|"字符进行连接。
7、字符串的截取:
对于截取,有两种的方法,一个是从指定位置截取到尾部,另一个是从指定位置截取到指定位置。我们来看使用案例:
注意:
对于后一种是前闭后开的,就对应上面来说从3开始到8,其实是到7就结束了。
8、字符串的其他操作:
去除字符串左右的空格,只留下中间的空格。 这个方法是trim方法。
9、字符串的不可变性:
1、String类在设计时就是不可改变的了,在实现中就已经说明了。
我们来看看:
如果你是这么认为的String是不可变性的那么就有问题了 。
那又是哪的问题呢?体现其不可变性?这是因为String类里面的value数组是private修饰的,只能在当前类中使用。
2、所以所有涉及到修改String类的对象是,都是创建一个新的对象进行修改。
10、字符串的修改:
我们可以看到,我们创建了一个字符串,但是呢,我想要在这个字符串上进行添加,那么我们要如何实现这个操作呢?
这个样子我们就可以看到,我们将其进行了在原来的基础上进行添加了,但是呢,我们实现这个操作,要在这个过程中创建很多的变量,这样做呢会造成我们的代码的效率十分的低下。所以我们不推荐String类进行这样的改变。
那么我们想要是其可以进行更改,但是呢又不想使效率低下,那么我们要怎么才能做到呢?
这时候我们就要认识一个新的关键字为StringBuffer和StringBuilder。
二、StringBuilder和StringBuffer:
对于StringBuffer和StringBuilder来说,它们有很多String没有的方法,String类有的它们都差不多都有,那么我们在这里呢就不进行再次的一一演示了,和String的使用是一样的。
但是呢StringBuffer和StringBuilder它们大部分的功能是相同的,但是呢,有些地方就有些不同,我们马上就会看到了。
那么我们接下来看看String没有的方法:
1、在尾部追加 append(String str):
这里呢就是相当与,String类当中的+=这个方法,我们来看看如何使用:
这是在本体上进行修改的 。
当然这里不只是可以追加String类型,也可以是boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量。
在这个方法中呢,StringBuffer和StringBuilder就是不同的了,让我们来看卡它们的底层代码:
这呢,就是一些区别了。
2、 在指定位置插入 insert :
这里面可以插入的类型和append可以添加的是一样的。
3、删除字符:
对于删除字符呢,有两种方法,一种是删除某位置上的,另外一种是从某位置删除到某位置。
1)、删除某位置 deleteCharAt(int index)方法:
2)、删除某位置到某位置 delete(int start, int end):
4、从某位置到某位置替换成某个String字符串 replace:
5、反转字符串(这个很重要) reverse():
这个非常好理解,就是字面意思,我们来看实现案例:
对于想要了解更多的关于StringBuffer和StringBuilder的可以去这里看看:
总结:
本次的分享就到这里了,我们关于String类型的也就介绍的差不多了,还有呢就是关于字符串常量池的东西了,这个呢,我们要在数据结构那里才能进行了解和学习。本次呢,就到这里了,期待我们下次的见面啦!!!拜拜~~~