String 类
字符串构造
String是引用类型,内部并不存储字符串本身
s1和s3引用的是同一对象
String对象的比较
=
=
==
==比较是否引用同一个对象
对于引用类型变量,
=
=
==
==比较两个引用变量引用的是否为同一个对象
boolean equals(Object anObject) 方法:按照字典序比较
int compareTo(String s) 方法
- 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
- 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较
字符串查找
数值和字符串转化
大小写转换
字符串和数组的转换
格式化
字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据
由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.
字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。
字符"|“,”*“,”+“都得加上转义字符,前面加上 “\”
如果是 “” ,那么就得写成 “\\” (两个斜杠表示一个斜杆)
如果一个字符串中有多个分隔符,可以用”|"作为连字符
多次拆分
字符串截取
从一个完整的字符串之中截取出部分内容
索引从0开始
注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标
字符串的不可变性
String是一种不可变对象. 字符串中的内容是不可改变
原因如下:
String类被final修饰,表明该类不能被继承
网上有些人说:字符串不可变是因为其内部保存字符的数组被final修饰了,因此不能改变。这种说法是错误的,
final修饰类表明该类不想被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内
容是可以修改的。
字符串修改
注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率
非常低下。
StringBuilder和StringBuffer
这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法
String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改。
String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:
String、StringBuffer、StringBuilder的区别
String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
StringBuffer与StringBuilder大部分功能是相似的
StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操
作