目录
1.引出
2.string类
概述
Java 程序中所有的双引号字符串,都是 String 类的对象
所在包
特点
1.不可变
指的是一旦创建了一个String对象,就不能修改其内容。
这意味着对于一个已经存在的String对象,任何尝试修改其内容的操作都会创建一个新的String对象,而不是在原来的对象上进行修改。
代码示例
public class Main { public static void main(String[] args) { String str1 = "Hello"; System.out.println("Original String: " + str1); // 尝试修改String内容 str1 = str1 + " World"; // 这里实际上是创建了一个新的String对象,而不是在原来的对象上进行修改 System.out.println("Modified String: " + str1); // 检查原始String是否被修改 System.out.println("Original String after modification: " + str1); } }
2.底层是字节数组( byte[] )
构造
创建字符串对象两种方式的区别
1.直接赋值
在JDK7开始,系统检查字符串在串池中是否存在,存在就复用,不存在创建新的
以""方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
内存原理
2.创建对象
字符串的比较
常用方法总结
字符串原理(自己能叙述)
1.字符串拼接原理:
a.等号右边有无变量
无,直接优化为字符串,编译时已经是最终结果。
有,一个加号俩个对象
底层使用StringBuilder拼接
然后转换为String对象
JDK8后
2. 字符串为引用数据类型为什么打印出的是值
底层自动调用toString()方法
3. 字符串变量参与的优化机制
底层调用StringBuilder进行拼接
4.常量优化机制
字符串+连接会进行自动优化
''a''+"b"
3.StringBuilder
概述
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。
所在包
作用
当我们在拼接字符串和反转字符串的时候会使用到
常用方法
StringBuilder源码分析(空间解析)
StringBuilder提高效率的原因
不会创建很多对象,浪费空间
4.StringJoiner(JDK8出现的)
概述
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
所在包
作用
提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。