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

一、String

1.常用的输入方式

Scanner in = new ScannerSystem.in);
//输入方法一
String s1 = in.next();
//in.next(): 读到空格就停止扫描(输入)。

//输入方法二
String s2 = in.nextLine();
//in.nextLine():读到回车就停止扫描(输入)。

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;
 

二、StringBuffer

1.StringBuffer的构造

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

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反转;

三、StringBuilder

1.StringBuilder的构造

StringBuilder s = new StringBuilder();
//无参数构造;
StringBuilder s = new StringBuilder(int I);
//指定容量构造;
StringBuilder s = new StringBuilder(String s_);
//指定字符串构造;

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. 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是没有线程功能的所以其性能会更高一点。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43821215/article/details/131143732