String特点:
1. 被final修饰,意味着String不能被继承,且成员方法都是默认是被final所修饰
2. 字符串对象一旦被初始化,其值就不会被改变。
存储位置(字符串常量池)
每当我们创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就直接返回常
量池中的实例引用。如果字符串不存在常量池中,就会实例化该字符串并且将其放到常量池中。由于String字符串
的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串
参考网址:https://www.cnblogs.com/xiaoxi/p/6036701.html
String常用的方法:
一. 获取:
返回类型 方法 含义
1. int length(): 返回字符串的长度
2. int indexOf(int char): 返回字符串第一次出现的位置
3. char charAt(int index) 根据位置获取字符串
4. int lastIndexOf(int char) 返回字符串最后一次出现的位置
5. string substring(int start, int end) 获取字符串中从start位置开始到end-1的位置的字符串。
6. string substring(int start) 获取start位置开始到字符串结束的位置
二. 转换:
1. String[ ] split(String regx) 将字符串以regx方式切割
2. char[ ] toCharArray() 将字符串转换为字符数组
3. String toUpper/LowerCase() 将字符串转换为大/小写
4. String replace(char old,char new,replacement(替换值顺序)) 将字符串中进行转换
5. String concat(String str) 将字符串进行连接
三. 比较:
1. int compareTo(String str) 按字典顺序比较两个数字大小
规则: 如果参数字符串等于此字符串,则值为0
; 一个值小于0
如果这个字符串的字典比字符串参数 小; 如果此字符串的字典大小超过字符串参数,则值大于0
。
四. 更多api文档请点击: https://blog.fondme.cn/apidoc/jdk-1.8-google/
五. StringBuffer :用于存储数据的容器
1. 特点:
a. 长度可变
b. 可以存储不同类型的数据
c. 最终转换成字符串进行使用
d. 可以对字符串进行修改。
2. 功能:
返回类型 方法 方法含义
a. 添加: StringBuffer append(String str) 将str添加到序列中
StringBuffer insert(int offset,String str) 在offset的位置后添加str
b. 删除: StringBuffer delete(int start,int end) 删除start到end-1位置的字符串
StringBuffer deleteCharAt(int index) 删除指定位置的字符串
c. 查找: char charAt(int index) 查找指定位置的序列值
int indexOf(int char) 查找序列值的位置
d. 修改 StringBuffer replace(int start,int end,String str) 用指定的String中的字符替
换此序列的子字符串中的str
void setCharAt(int index,char ch) 指定索引处的字符设置为 ch
。
e. 设置长度: void setLength(int index) 设置长度为index的字符序列
六. StringBuilder:
1. 特点:
a. 不保证同步,所以速度优先于StringBuffer
b. 通常用于单线程,可以提高效率
2. 功能:
与StringBuffer类似
七. String、StringBuffer、StringBuilder的区别:
1. String是不可变类,而StringBuffer和StringBuilder是可以变换的类
2. String是字符串常量,而StringBuffer和StringBuilder是字符串变量
3. 执行速度:String < StringBuffer < Stringbuilder 。