当前位置: 代码迷 >> 综合 >> String类,StringBuilder、StringBuffer详解指南,它们的区别,相互转化,以及区别
  详细解决方案

String类,StringBuilder、StringBuffer详解指南,它们的区别,相互转化,以及区别

热度:97   发布时间:2023-11-25 08:56:36.0

String类

1.是什么

String类是java.lang包下的一个类,是用来封装对字符串(java中的字符串都是对象)的各种操作。在内存中有一个共同维护的字符串(对象)池。

2.调用函数

2.1 构造方法

  • public String(char[] value)

    char[] s = {
          'h','e','l','l','o'};
    System.out.println(new String(s));
    //将字符数组转化为字符串 
    
  • public String(char[] value, int offset, int court)

    char[] s = {
          'h','e','l','l','o'};
    System.out.println(new String(s,0,2));
    //将指定范围内的字符数组变为字符串
    //结果:he (左[闭右)开)
    

2.2 普通方法

  • public char charAt (int index)

    String s1 = "hello world";
    System.out.println(s1.charAt(4));
    //结果:o
    //返回指定索引处的字符内容
    
  • public char[] toCharArray ()

    String s1 = "hello world";
    char[] s2 = s1.toCharArray();//将字符串转化为字符数组for (int i = 0; i < s2.length; i++) {
          System.out.print(s2[i]);}
    
  • public boolean contains (String s)

     String s1 = "hello world";
    System.out.println(s1.contains("llo"));
    //结果:true
    //判断一个子字符串是否存在
    
  • public int indexOf (String s)

     String s1 = "hello world";
    System.out.println(s1.indexOf("l"));
    //结果:2
    //由前向后查找子字符串的位置,没找到返回-1
    
  • public String replaceXXX (String regex, String replacement)

     String s1 = "hello world";
    System.out.println(s.replaceAll("l", "a"));//全部替换
    //结果:heaao worad
    System.out.println(s.replaceFirst("l", "a"));//替换首个
    //结果:healo world
    
  • public String substring (int beginIndex, int endIndex)

     String s1 = "hello world";
    System.out.println(s1.substring(6,8));
    //结果:wo
    //截取字符串指定范围[x,y)的的字符,并返回
    
  • public String[] split (String regex)

    String s1 = "hello world";
    String[] split = s1.split("l");for (int i = 0; i < split.length; i++) {
          System.out.println(split[i]);}
    //结果:hello
    // world
    //按照指定的字符串进行全拆分
  • length

    求字符串长度。

  • toUpperCase & toLowerCase

    将字符串转化为大写字母、小写字母。

3. String & StringBuilder & StringBuffer的区别

String的值是不变的,每次对String字符串的操作都是在创建新的对象

为了节约空间,更好的操作字符串,引入了StringBuilder和StringBuffer。与String 类不同的是,StringBuilder和 StringBuffer 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder相比于StringBuffer有速度优势,但StringBuffer更线程安全。

  • String 不可变字符序列。
  • StringBuilder 可变字符序列、效率高、线程不安全。
  • StringBuffer 可变字符窜序列、效率低、线程安全。

4. StringBuilder和StringBuffer常用函数

StringBuilder 和 StringBuffer 方法和功能完全一致,故只需介绍一个。

  • 创建

    StringBuilder sb = new StringBuilder()//括号内可以加要转化的String字符串
    
  • 添加

    StringBuilder sb = new StringBuilder();
    sb.append("hello");
    sb.append('w').append('o').append('r').append('l').append('d');
    
  • 插入

    StringBuilder sb = new StringBuilder("hello");
    sb.insert(3,"lll");
    System.out.println(sb);
    //结果:helllllo
    
  • 删除( x, y ]

    • delete(Start,end): 删除指定范围的字符内容
    • deleteCharAt(index): 删除指定位置的字符
    • delete(0,sb.length): 清空
  • 获取(与String类一致)

    • charAt(index)
    • indexOf(char)
  • 修改

    • replace(start, end, string)
    • setCharAr(index, char): 将index位置的字符变为新的char
  • 反转

    • reverse()
  相关解决方案