在这里先分别对String、StringBuffer、StringBuilder进行解析,在比较三者异同

String

String类:代表字符串。Java程序中所有的字符串字面值(如"fda")都能作为此类的实现类实现

从下面源码可以看出一下几点:

  • String声明为final的,不可被继承
  • String实现了Serializable接口:表示字符串是支持序列化的实现了Comparable接口:表示String可以比较大小
  • String在内部定义了final的char型数组(final char[]),用于存储字符串数据。 可以得出:String代表一个不可变的字符序列。具有不变性。S
public final class String
    implements java.io.Serializable,Comparable<String>,CharSequence {
        private final char value[];

String的初始化方式:常用的两种:

//通过字面量的方式定义
String s1 = "java";
//通过new + 构造器方式
String s2 = new String("java2");

String的常用用法详解

  1. int length():返回字符串的长度
String s1 ="HelloWorld";
System.out.println(s1.length());//10
  1. char chaeAt():返回索引处(index)的字符
String s1 ="HelloWorld";
System.out.println(s1.charAt(5));//W
  1. boolean isEmpty():判断是否是空字符串
String s1 ="HelloWorld";
System.out.println(s1.isEmpty());//false
  1. String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写
String s1 ="HelloWorld";
String s2 = s1.toLowerCase();
System.out.println(s2);//helloworld
  1. String toUpperCase():使用默认语言环境,将String中的所有字符转换为大写
  2. String trim():返回字符串的副本,忽略字符串前和字符串后的空白
String s3 = "     he   ll   o   w  or l d      ";
String s4 = s3.trim();
System.out.println("----------" + s4 + "-----------");
//"he   ll   o   w  or l d"
  1. boolean equals():比较两个字符串的内容是否相同
String s6 = "abc";
 String s7 = "cde";
 System.out.println(s6.equals(s7));//false
  1. String concat():将指定字符串连接到此字符串的结尾。
String s1 = "abc";
System.out.println(s1.concat("def"))//abcdef
  1. int compareTo():比较两个字符串的大小
String s6 = "abc";
String s7 = "cde";
int i = s6.compareTo(s7);
System.out.println(i);//-2
  1. String substring((int beginIndex):返回一个新的字符串,它是此字符串的从 beginIndex开始截取到最后的一个子字符串
String s8 = "你是如此美丽";
 String s9 = s8.substring(2);
 System.out.println(s9);//如此美丽
  1. boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
String str1 = "helloworld";
String str2 = "wo";
boolean b4 = str1.contains(str2);//true
  1. int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
String str1 = "helloworld";
System.out.println(str1.indexOf("lo"));//3
//若不存在,返回-1
  1. int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
String str1 = "helloworld";
System.out.println(str1.lastIndexOf("o"));//6
  1. String replace(char oldChar, char newChar):返回一个新的字符串,它是 通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
  2. boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
  3. String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

 String与基本数据类型之间的转换

String转换成基本数据类型、包装类:调用包装类的静态方法:parseXXX(str)

基本数据类型、包装类转换成String:调用String重载的ValueOf(XXX)

String str = "123";
int num = Integer.parseInt(str);//123
double num1 = Double.parseDouble(str);//123.0
String str2 = String.valueOf(num);//"123"

 String与char[]之间的转换

String转换成char[]:调用String的toCharArray()

char[]转换成String:调用String的构造器

String str = "abc123";
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
       System.out.println(charArray[i]);
  }   // a  b  c  1  2  3
        
char[] arr = new char[]{'h','e','l','l','o'};
String str2 = new String(arr);
System.out.println(str2);//"hello"

 String与byte[]之间的转换

String转换成byte[]:调用String的getBytes()

byte[]转换成String:调用String的构造器

String str1 = "abc123";
byte[] bytes = str1.getBytes();
System.out.println(Arrays.toString(bytes));//[97, 98, 99, 49, 50, 51]
String str2 = new String(bytes);
 System.out.println(str2);//abc123