String、StringBuilder、StringBuffer详解,以及常用API

String

  1. 所属:java.lang.String

  2. 特性:

    • 无法被继承,String类由final关键字修饰

    • 对象无法被修改,底层实际封装的是一个字符数组,此数组也由final修饰

    • 由于采用Unicode编码格式,所以底层char数组中每个字符占2个字节内存空间

    • 一旦对String字符串内容进行修改,实质是创建了一个新的字符串对象,然后将字符串的引用指向了新对象

  3. 常用方法:

    1. length():获取字符串的长度

      String str="我爱Java";
      int len=str.length();
    2. trim():去除当前字符串两边的空白字符

      String str="    hello world   ";
      str=str.trim();
    3. toUpperCase()/toLowerCase():将当前字符串中的英文字母转换为全大写/全小写

      String str="我爱Java!"
      String upper=str.toUpperCase();
      String lower=str.toLowerCase();
    4. startsWith()/endsWith():判断字符串是否是以给定的字符开始/结束的

      String str="thinking in java";
      boolean starts=str.startsWith("think");
      boolean ends=str.endsWith(".png");
    5. charAt():返回字符串指定位置字符

      String str="thinking in java";
      char c=str.charAt(9);
    6. indexOf()/lastIndexOf():查找给定字符串在当前字符串中第一次/最后一次出现的位置

      String str="thinking in java";
      int index=str.indexOf("in");
      int index=str.indexOf("in",3);//下标为3
      int index=str.indexOf("abc");//不存在,返回-1
      int index=str.lastIndexOf("in");
    7. substring():截取当前字符串指定范围的字符串[start,end)

      String str="www.tedu.cn";
      String name=str.substring(str.indexOf(".")+1,str.lastIndexOf("."));
      String name=str.substring(4);//下标4--最后
    8. valueOf():将其他数据类型转换为String类型

      int a=123;
      String s=String.valueOf(a);


StringBuilder

  1. 所属:java.lang.StringBuilder

  2. 特性:

    • 此类为了弥补String的无法修改字符串缺憾,专门用来修改字符串,内部维护一个可变长的字符数组,对字符串对象进行修改,实质是对原有对象进行修改,大的提高了效率

    • 内部提供对数组元素进行操作的方法(增、删、改、插)

  3. 常用方法:

    1. append():在给定数组末尾追加字符串

      String str="abc";
      StringBuilder builder=new StringBuilder(str);
      builder.append("def");//"abcdef"
    2. delete():删除[start,end)之间的字符串

      String str="abcdef";
      StringBuilder builder=new StringBuilder(str);
      builder.delete(0,3)//"def"
    3. replace():替换[start,end)之间的字符串

      String str="abcdef";
      StringBuilder builder=new StringBuilder(str);
      builder.replace(3,7,ghi);//"abcghi"
    4. insert():在给定位置插入字符串

      String str="abef";
      StringBuilder builder=new StringBuilder(str);
      builder.insert("cd");//"abcdef"
    5. toString():将其他类型转换为String类型

      String str="abc";
      StringBuilder builder=new StringBuilder(str);
      String str1=builder.toString();


StringBuilder和StringBuffer区别

  1. 本质:都是对String不便于修改的扩展,本质上都是对字符串进行修改,底层都维护一个可变长的字符数组

  2. 区别:

    • StringBuilder:非线程安全,并发处理(同时一起执行),性能快(一般都使用此方法)

    • StringBuffer:线程安全,同步处理(一个执行完再下一个),性能稍慢

猜你喜欢

转载自blog.csdn.net/m0_69270622/article/details/129959073
今日推荐