Java String 核心知识点总结---面试+开发必备
一.String的本质
- final类,不可被继承
- 不可变对象:一旦创建,内容不可被修改,修改会生成新的字符串
- 底层:final char[]
- 常量池:字面量字符串优先进入字符串常量池,相同内容复用对象
二 .创建方式&区别
- 字面量
String s="abc"如常量池,复用,效率高
2.new String()
String s=new String("abc")一定创建新对象,尽量少用
三.判等
1.比较内容:equals()
str1.equals(str2)
2.比较地址:==(判断是否为同一地址)
四.常用的核心方法
- length():长度
- charAt(int index):获取指定下标字符
- indexOf(String):首次出现的下标,不存在返回-1
- lastindexOf(String):最后出现的下标
- isEmpty():判断是否为空串" "
- substring(int begin):从begin截到末尾
- substring(int begin,int end):左闭右开【begin,end)
- trim():去掉首位空白,不含中间
- toUpperCase():转大写
- toLowerCase:转小写
- toCharArray():转数组
- compareTo(String):字典序比较(返回整数)
** String转换-基本类型**
int i=integer.parseint(str);将字符串转为整型
String s=String.valueof(num);将整型转为字符串
# String,StringBuilder,StringBuffer区别
- String:不可变,少量操作用
- StringBuilder:可变,非线程安全,单线程首选,效率最高
- StringBuffer:可变,线程安全,多线程用
- 拼接建议:循环拼接必须用StringBuilder,不用+。
String Builder sb =new StringBuilder();
for(int i=0;i<10000;i++){
sb.append(i);//只往后面加,不新建对象
}
subString是左闭右开,不含结束下标。
StringSuilder的方法
-
append(XXX)--添加内容
-
insert(int offset,XXX)--指定位置插入(offset:插入位置索引,XXX:任意数据)
-
delete(int start,int end)--删除[start,end)区间内的字符(左闭右开)
-
deleteCharAt(int index)--删除指定索引的单个字符
-
replace(int start,int end,String str)--用str替换[start,end)区间内的字符
Stringbuilder sb=new Stringbuilder("i like c++");
sb.replace(7,10,"java");
//结果: i like java
7.setCharAt(int index,char ch)--修改指定位置索引的字符为ch
8.charAt(int index)--获取指定索引处的字符
9.substring(int start)/substring(int start,int end)--截取字符串,返回新String,不修改原对象
10.indexOf(String str)--返回字串第一次出现的索引,找不到返回-1
11.reverse():反转字符串序列
Split可以把字符串按照你指定的分隔符,切成一个字符串数组
- 分隔符可以是 空格 "" 逗号 "," 横杠"-"
String str="Hello JAVA"
//按照空格分割成单词数组
String [] word=str.split("")
结果就是word[0]="Hello"
word[10]="JAVA"
例子总结
public class StringBuilderDemo {
public static void main(String[] args) {
// 1. 初始化
StringBuilder sb = new StringBuilder("Hello");
// 2. 追加
sb.append(" ").append("Java").append(2025);
System.out.println("append后: " + sb);
// 3. 插入
sb.insert(5, ",");
System.out.println("insert后: " + sb);
// 4. 替换
sb.replace(7, 11, "Spring");
System.out.println("replace后: " + sb);
// 5. 删除
sb.deleteCharAt(sb.length() - 1);
System.out.println("delete后: " + sb);
// 6. 反转
sb.reverse();
System.out.println("reverse后: " + sb);
// 7. 转回 String
String str = sb.toString();
System.out.println("最终字符串: " + str);
// 8. 清空
sb.setLength(0);
System.out.println("清空后长度: " + sb.length());
}
}