String类
String类的特点
在Java中,所有双引号字符串,都是String这个类的对象
字符串在创建之后,其内容不可改变
String字符串虽然不可改变,但是可以被共享——>
字符串常量池:当我们使用双引号创建字符串对象时,会检查常量池中是否存在该数据
不存在:创建
存在:复用
String类的常见面试题
true, String类型的字符串对象在被声明时,会在字符串常量池检查是否存在该字符串,如果存在,就直接把第一个的地址赋给需要声明的对象,如果不存在,才会开辟新的内存地址创建对象
false,s1在内存中创建一个对象。s2在内存中创建两个对象。s1在创建时会在堆内存的StringTable中创建常量,而s2在创建时,会在堆内存中开辟一块新的地址保存对象
false,先检查字符串常量中是否存在"abc","ab","c",这三个对象,没有就创建,然后通过StringBuilder将两个字符串拼接起来,通过toString方法转换成String类型的对象,然后s3真正访问的是String的地址,而不是StringBuilder的地址
true,“a”,”b”,”c”三个本来就是字符串常量,进行+符号拼接之后变成了“abc”(Java中有常量优化机制),“abc”本身就是字符串常量,所以两者比较会相等
字符串的遍历
toCharArray:将一个字符串转换为一个字符数组,再进行遍历操作
ps:如果定义的方法和主方法是平级的,需要带static,反之则不带
对象.charAt(int index)返回指定索引处的char值
String类的截取
subString(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串
subString(int beginIndex,int endIndex ):返回一个新的字符串,它是此字符串的一个子字符串
String类的替换—>切割
替换: replace(旧值,新值)
切割: spilt("切掉的值"), **. ** —>代表通配符, \. 则代表 **. ** 本身
StringBuilder
作用:提高字符串的操作效率
StringBuilder介绍
StringBuilder是字符串缓冲区,将其理解成容器,这个容器可以存储任意数据类型,但是只要进入到这个容器,就全部变成字符串
StringBuilder是一种可变的字符序列
StringBuilder的构造方法:
空参构造:
StringBuilder():创建一个空白的字符串缓冲区(容器),其初始容量为16个字符,超过该容量会自动扩容—>动态初始化
带参构造:
StringBuilder(String str):创建一个字符串缓冲区,并初始化好指定的参数内容—>静态初始化
StringBuilder常用成员方法
append:添加数据,并返回自己
链式编程:调用的方法,返回结果是对象时,就可以继续向下调用方法
reverse: 将缓冲区中的内容进行反转,返回自己