本文详细介绍了String类以及常用的String相关方法,以及StrinBuftrer , StringBulder相关方法的使用,建议有印象即可,不需要都记住,使用时去查取即可
一、创建一个String类型的变量
我们平时创建String类型的变量一般是第一种形式,
但是String其实是一个Java定义好的类,所以我们也可以以创建引用--对象的形式创建String类型的变量
我们也可以把一个字符串数组传给String类的构造方法,创建一个String类型的变量
二、关于String类
通过上面的介绍,我们知道了String类,我们去看看它内部到底是怎么实现的
原来String类内部也是定义了(char)字符数组 ( 在JDK1.8中是byte类型),所以它可以接收数组,y也实现了几个接口包括之前说过的Comparable 接口。
并且在String类中定义了很多好用的方法,供我们直接去使用,下面我们来演示这些方法
三、String对象之间的比较
1. ==比较:
按照是否引用同一个对象比较
2. boolean equals(Object anObject) 方法:
按照字符串每个字符是否一致比较,返回值boolean类型
3. int compareTo(String s) 方法:
按照字符串每个字符是否一致比较,返回值是 int 类型
前后比较,大了就是正数,小了就是负数,相等为0
4. int compareToIgnoreCase(String str) 方法:
与compareTo方式相同,但是忽略大小写比较
四、字符串的查找
1.char charAt(int index)
根据下标值查找字符串中的字符
2.int indexOf(int ch)4种
3.int lastIndexOf(int ch)4种
和indexOf 的区别只是它是从后往前开始找
五、转化
5.1序列化与反序列化
1.value of() 数字转字符串
2.字符串转数字
Integer.parseInt
Double.parseDouble
5.2大小写转换
// 小写转大写 toUpperCase();
// 大写转小写 toLowerCase( );
5.3. 格式化输出
String.format("%d-%d-%d", 2024, 12,6);
六、字符替换
replace 4种
七、字符串拆分
String[] split
拆分IP地址
注意事项:
1. 字符 "|", "*" , "+", "." 都得加上转义字符,前面加上 "\\"
2. 而如果是 "\" ,那么就得写成 "\\\\"
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.
八、字符串截取
String substring
Java中的取一定范围的方法,一般都是左闭右开的
String trim()去除左右两边空格
九、字符串的不可变性
String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改
你所有的对字符串进行改变的方法或者做法都是创建了一个新对象,而不是一开始的那个数组。
原因是在源码中, char value [ ] 数组都被 private 修饰,这个数组只能在String类中使用,除非直接对char value [ ] 进行set get.
3. StringBuilder和StringBuffer
StringBuilder和StringBuffer都是用于处理字符串的可变类。它们的出现主要用于解决Java中字符串拼接的效率问题。
在Java中,String类是不可变的,也就是说每次对字符串进行拼接(+=)、删除、替换等操作时,都会创建一个新的String对象,原来的String对象会被丢弃,这样会造成大量的内存开销。
而StringBuilder和StringBuffer则是可变的,它们可以在原有对象上直接进行操作,不会创建新的对象,因此可以大大提高字符串的操作效率。
revrse(逆序)
insert(插入)
delete(删除)
tostring(变字符串)
它们的区别
面试题: 1. String、StringBuffer、StringBuilder的区别
String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
StringBuffer与StringBuilder大部分功能是相似的
StringBuffer采用同步处理,属于线程安全操作;
而StringBuilder未采用同步处理,属于线程不安全操作