String类
1.string类是一个之值不可以改变的常量,可以共享,字面值“abc”都是该值的对象。
2.string流程图:
总结:
①对于有new的,相当于在方法区的字符串常量池中创建对象,并且只创建一份,共享。
②对于没有new的,相当于在堆中创建新对象,该对象中包含的字符序列,从字符串常量池中
获取。
3.equals与==区别
①==用来判断数值是否相等,对于基本类型判断的是数值,对于引用类型来说判断的是地址
是否相同。
②equals只能判断对象是否相等,不能判断基本数据类型。
注意:如果想要根据需求进行判断,必须重写equals方法。
③对于object类中的equals方法,在没有重写的情况下效果和==相同。
4.字符对象创建细节问题
对于字符串拼接形式,如果是字符串常量。在编译时直接计算这种现象称为字符串编译优化
5.字符串常用方法一
①charAt():返回索引位置的字符。
②compareTO():按字典顺序比较两个字符串。
注意:存在字符序列不同,对象的Unicode码 - 参数的Unicode码
字符序列相同长度不同,对象的长度 - 参数的长度
① >0 对象才参数的后面
② <0 对象在参数的前面
③ == 对象与参数相等
③contains():判断是否包含
④equals():对象与参数字符序列相同返回true,判断对象与参数字符串是否相同。
⑤equalslgnoreCase():忽略大小写
⑥getBytes():字符串转字节数组。
注意: 强制类型转换,无法实现字符串转字节数组
⑦endswith()/ startswith():后缀和前缀
⑧concat():拼接字符串
6.字符串常用方法二
①isEmpty():判断是否为空
注意:空格不为空
②length():字符串长度
注意:数组中的length是属性,不带(),字符串中的length()是方法,带()
③replace():替换所有
④split():根据参数拆分字符串,为字符串数组
注意:如果使用转义\,两个表示一个\,如果做拆分4个表示一个\
⑤lastIndexOf():用法同indexOf返回参数字符串,在字符串对象中最后一次出现的索引值。
7.字符串常用方法三
①substring():截取字符串
注意:如果只有一个参数,表示从该位置截取到最后。如果有两个参数,表示从第一个开始截取,到第二个位置的索引-1处结束。
补充:空格也算一个
②toCharArray():字符串转字符数组
③toLowerCase()/ toUpperCase():转小写/转大写
④trim():返回字符串副本,忽略前部空白和后尾空白
StringBuffer和StringBulider
1.StringBuffer:线程安全的可变字符序列,类似与字符串中的一个字符缓冲区。
缓冲区:有富裕容量,作为临时存储区
2.StringBuffer:构造方法
①StringBuffer():不带字符的字符串缓冲区,初始容量16
②StringBuffer(int capacity):指明初始容量
③StringBuffer(String s):初始容量16 + 字符串长度
3.常用方法一
①capacity():容量
②length():返回长度(字符数)
③append():追加到末尾。
④delete(int start, int end)/ deleteCharAT(int index):删除/根据索引删除
注意:
①(start,end],(获取不到end的值),end的值为end-1
②对于字符串,一般都是副本,是新的字符串。而对于字符串缓冲器来说,
基本都是同一个
4.常用方法二
①insert(int offset, Object obj):插入
②reverse():取反
列如:判断对称字符串 abcba → abcba
③toString():转换为字符串
④replace(int start, int end, String str):替换 (start,end]半开半闭区间