String字符串
一.字符串构造
1.使用常量串构造
2.直接new String对象
3.使用字符数组进行构造
二.判断字符串相同
.1.==
该符号是以字符串地址来进行判断 即使两者字符串内容相同但如果不用同一个地址的话 也是false
2.equals
equals是用来判断字符串内容是否相同的关键字 如果内容相同则为true 反之为false
三.字符串与数组之间的转换
1.字符串转为数组
2.数组转化为字符串
四.字符串在idea中具有多种功能例如 比较大小 变大小写均可在帮助文档里面找到对应功能函数
附加 在字符串拆分时 字符| * +都需加上转义字符\\
五. 字符串变大小写
由此可得出在字符串变大小写时并不是直接变原来字符串内容 而是在原来基础上重新构造产生一个数组 从而将变完的数组赋值给该新数组 原数组仍不变,这点需要注意
六.StingBuffer 与StringBulder
1.StringBuffer
StringBuffer是使用缓冲区的,本身也是操作字符串的,但与String类不同,String类中的内容一旦声明之后不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的[1] 。
对于StringBuffer而言,本身是一个具体的操作类,所以不能像String那样采用直接赋值的方式进行对象实例化,必须通过构造方法完成。
StringBuffer连接字符操作
当一个字符串的内容需要被经常改变时就要使用StringBuffer。
在StringBuffer中使用append()方法,完成字符串的连接操作。
2.StringBulder
构造函数:
StringBuilder():构造一个不带任何字符的字符串生成器,初始容量为16个字符。
StringBuilder(String str):根据指定的字符串内容构造一个字符串生成器,并初始化为指定的字符串内容。
append 方法:用于向字符串生成器中追加字符或各种类型的数据。append 方法会返回当前对象本身,支持链式编程。
insert 方法:允许在指定位置插入字符或各种类型的数据。
delete 和 replace 方法:用于删除或替换字符串中的部分内容。
reverse 方法:用于反转字符串生成器中的字符序列。
toString 方法:将 StringBuilder 对象转换为 String 对象。
使用场景:
StringBuilder 适用于在单线程环境中进行字符串的频繁修改操作。例如,字符串的拼接、反转等。由于 StringBuilder 在性能上的优势,它通常被推荐用于这些场景。
示例代码:
StringBuilder sb = new StringBuilder("initial string");
sb.append(" more text"); // 追加字符串
sb.insert(0, "prefix"); // 在起始位置插入字符串
sb.delete(4, 8); // 删除指定位置的字符
sb.replace(4, 8, "replaced"); // 替换指定位置的字符
String result = sb.toString(); // 转换为String类型
3.两者联系
1.线程安全:
StringBuffer是线程安全的,它的所有公开方法都被synchronized修饰,这意味着在多线程环境下,StringBuffer能够安全地被多个线程访问和修改。而StringBuilder是线程不安全的,它的方法没有被同步,因此在单线程环境中,StringBuilder的性能要优于StringBuffer。
2.性能:
由于StringBuffer的线程安全特性,它的性能可能会受到影响。在多线程环境下,StringBuilder的性能要低于StringBuffer,因为它不需要考虑线程同步的开销。然而,在单线程环境中,StringBuilder的性能要优于StringBuffer,因为它避免了不必要的同步操作。
3.缓冲区:
StringBuffer内部使用一个char数组来存储字符串,并且有一个toStringCache字段来缓存转换后的字符串。而StringBuilder没有这个缓存,它每次都需要复制字符数组来构造一个新的字符串。
4.使用场景:
根据上述特点,StringBuffer适用于多线程且频繁操作的数据存储,而StringBuilder适用于单线程且频繁操作的数据存储。在实际应用中,如果字符串操作涉及多线程,那么应该使用StringBuffer;否则,如果字符串操作是单线程的,可以考虑使用StringBuilder来提高性能