关于字符串(String)的一些重要知识点

9 阅读2分钟

Java String 核心知识点总结---面试+开发必备

一.String的本质

  1. final类,不可被继承
  2. 不可变对象:一旦创建,内容不可被修改,修改会生成新的字符串
  3. 底层:final char[]
  4. 常量池:字面量字符串优先进入字符串常量池,相同内容复用对象

二 .创建方式&区别

  1. 字面量
String s="abc"如常量池,复用,效率高

2.new String()

String s=new String("abc")一定创建新对象,尽量少用

三.判等

1.比较内容:equals()

str1.equals(str2)

2.比较地址:==(判断是否为同一地址)

四.常用的核心方法

  1. length():长度
  2. charAt(int index):获取指定下标字符
  3. indexOf(String):首次出现的下标,不存在返回-1
  4. lastindexOf(String):最后出现的下标
  5. isEmpty():判断是否为空串" "
  6. substring(int begin):从begin截到末尾
  7. substring(int begin,int end):左闭右开【begin,end)
  8. trim():去掉首位空白,不含中间
  9. toUpperCase():转大写
  10. toLowerCase:转小写
  11. toCharArray():转数组
  12. compareTo(String):字典序比较(返回整数)

** String转换-基本类型**

int i=integer.parseint(str);将字符串转为整型
String s=String.valueof(num);将整型转为字符串

# String,StringBuilder,StringBuffer区别

  1. String:不可变,少量操作用
  2. StringBuilder:可变,非线程安全,单线程首选,效率最高
  3. StringBuffer:可变,线程安全,多线程用
  4. 拼接建议:循环拼接必须用StringBuilder,不用+。
String Builder sb =new StringBuilder();
for(int i=0;i<10000;i++){
sb.append(i);//只往后面加,不新建对象
}

subString是左闭右开,不含结束下标。

StringSuilder的方法

  1. append(XXX)--添加内容

  2. insert(int offset,XXX)--指定位置插入(offset:插入位置索引,XXX:任意数据)

  3. delete(int start,int end)--删除[start,end)区间内的字符(左闭右开)

  4. deleteCharAt(int index)--删除指定索引的单个字符

  5. 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());
    }
}