• 【详解】String、StringBuffer、StringBuilder的基本用法及区别


    一、String

    1.常用的输入方式

    Scanner in = new ScannerSystem.in);
    //输入方法一
    String s1 = in.next();
    //in.next(): 读到空格就停止扫描(输入)。
    
    //输入方法二
    String s2 = in.nextLine();
    //in.nextLine():读到回车就停止扫描(输入)。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.String类型的修改

    在java中字符串一旦定义了,就不可以改变。我们可以通过String的方法或者通过复制定义的字符串构造StringBuilder和StringBuffer实现对字符串的“修改”。

    3.元素访问

    可以通过string.charAt(int Index)对字符串某一位置上的字符进行访问,但是不可以通过该方法对其修改。

    4.String方法:

    String s = in.nextLine();
     
     
    s.length();
    //返回当前字符串的实际长度;
    s.charAt(int Index);
    //返回下标为Index的字符;
    s.substring(int start);
    //返回从start开始一直到结束的子串;
    s.substring(int start,int end);
    //返回范围是[start,end)的子串;
    s.compareTo(String anotherString)
    //与anotherString进行比较,s大返回正数,s小返回负数,相等返回0;
    s.compareTolgnore(String anotherString)
    //与anotherString进行比较,s大返回正数,s小返回负数,相等返回0,但忽略大小写;
    s.equals(Object anotherObject);
    //相等返回true不相等返回false;
    s.equalslgnoreCase(String anotherString);
    //相等返回true不相等返回false,忽略大小写;
    s.cancat(String str)
    //连接s和str等效于“+”
    s.indexOf(int n/String str);
    //从头开始查找n或者str首次出现的位置(若是str返回开始字符的下标),如果没有返回-1;
    s.indexOf(int n/String str,int p);
    //和上一个方法类似,不同的是从左开始的某个下标往后查找。
    s.lastIndexOf(int ch/String str);
    //与前面类似,区别在于该方法从字符串的末尾位置向前查找。
    s.lastIndexOf(int ch/String str,int p);
    //和上一个方法类似,不同的是从左开始的某个下标往前查找。
    s.toLowerCase();
    //字符串小写转大写;
    s.toUpperCase();
    //字符串大写转小写;
    s.replace(char a,char b);
    //将s中的a都替换成b;
    s.replaceFirst(String a,String b);
    //将s中的第一个子串a替换成b;
    s.replaceAll(String a, String b);
    //将s中所有a子串替换成b;
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    二、StringBuffer

    1.StringBuffer的构造

    StringBuffer s = new StringBuffer();//无参数构造;
    StringBuffer s = new StringBuffer(int I);//指定容量构造;
    StringBuffer s = new StringBuffer(String s_);//指定字符串构造;
    
    • 1
    • 2
    • 3

    2.StringBuffer的方法

    StringBuffer s = new StringBuffer();
     
    s.Capacity();
    //返回当前字符串缓冲区的容量;
    s.length();
    //返回当前字符串缓冲区的实际长度;
    s.append(String str);
    //向字符串缓冲区内添加字符串str,;
    s.insert(int p,String s);
    //在第p+1的位置上插入s;
    s.deleteCharAt(int Index);
    //删除指点字符,返回字符缓冲区;
    s.delete(int start,int end);
    //删除[start,end)的字符,返回字符缓冲区;
    s.substring(int start);
    //返回从start开始一直到结束的子串;
    s.substring(int start,int end);
    //返回范围是[start,end)的子串;
    s.replace(int start,int end,String str)
    //将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
    s.toString();
    //将可变长字符串以字符串的形式返回;
    s.reverse();
    //将字符串s反转;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三、StringBuilder

    1.StringBuilder的构造

    StringBuilder s = new StringBuilder();
    //无参数构造;
    StringBuilder s = new StringBuilder(int I);
    //指定容量构造;
    StringBuilder s = new StringBuilder(String s_);
    //指定字符串构造;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.StringBuilder的方法

    StringBuilder s = new StringBuilder();
     
    s.Capacity();
    //返回当前字符串缓冲区的容量;
    s.length();
    //返回当前字符串缓冲区的实际长度;
    s.append(String str);
    //向字符串缓冲区内添加字符串str,;
    s.insert(int p,String s);
    //在第p+1的位置上插入s;
    s.deleteCharAt(int Index);
    //删除指点字符,返回字符缓冲区;
    s.delete(int start,int end);
    //删除[start,end)的字符,返回字符缓冲区;
    s.substring(int start);
    //返回从start开始一直到结束的子串;
    s.substring(int start,int end);
    //返回范围是[start,end)的子串;
    s.replace(int start,int end,String str)
    //将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
    s.reverse();
    //将字符串s反转;
    s.toString();
    //将可变长字符串以字符串的形式返回;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    四、区别

    1. StringBuilder和StringBuffer都可通过toString()转换成 String类型

    2. String可以通过类型转换:StringBuilder(String s)就可以实现从String转化成StringBuilder。

    3. 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

    4. 和 String 类不同的是,StringBuffer 和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

    5. StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

    6. 由于 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    7. StringBuffer是线程安全的,但是StringBuilder是没有线程功能的所以其性能会更高一点。
      在这里插入图片描述

  • 相关阅读:
    线束测试仪怎么使用的,ATX-3000线束检测仪基本操作流程
    Python中使用IDLE调试程序
    mac 版本 Lightroom Classic 2024 正式版来了 七个有趣的新功能值得更新
    基于IMDB评论数据集的情感分析
    【数据结构】反射、枚举
    Cloneable接口与浅克隆,深克隆
    神经网络模型的训练过程,神经网络模型训练过程
    blob和file对象文件API
    【软考软件评测师】第十六章 性能测试基础
    WebRTC点对点通讯建立连接的流程
  • 原文地址:https://blog.csdn.net/weixin_43821215/article/details/131143732