String的常用方法

!!! note 目录

字符串的常用方法

一、第一部分

1.1 char charAt(int index)

charAt(int index) 方法在 Java 中用于从字符串中获取指定索引位置的字符。

1
2
3
4
5
 @Test
public void testCharAt() {
String str = "重剑无锋,大道无工。";
System.out.println(str.charAt(0));
}

1.2 int length()

对于字符串,length() 是一个方法,用于获取字符串的长度(即字符串中字符的个数)。

1
2
3
4
5
6
7
@Test
public void testLength(){
//注意:数组是length属性,字符串是length()方法。
System.out.println("重剑无锋,大道无工。".length());
int[] arr={1,2,3,4,5,6};
System.out.println(arr.length);
}

1.3 boolean isEmpty()

isEmpty() 方法在 Java 中用于检查字符串是否为空。该方法返回一个布尔值truefalse,用以指示字符串是否不包含任何字符。

1
2
3
4
5
6
7
8
@Test
public void testIsEmpty(){
//只要数组长度为0,就是空。
String s="";
System.out.println(s.isEmpty()); //true
s="hello";
System.out.println(s.isEmpty()); //false
}

1.4 boolean equals(Object anObject)

equals(Object anObject) 方法在 Java 中用于比较两个对象是否相等。对于字符串对象equals 方法比较的是字符串的内容,而不是它们的引用地址。

1
2
3
4
5
6
@Test
public void testEquals(){
String s1="abc";
String s2=new String("abc");
System.out.println(s1.equals(s2)); //true
}

1.5 boolean equalsIgnoreCase(String anotherString)

equalsIgnoreCase(String anotherString) 方法在 Java 中用于比较两个字符串是否相等,而忽略大小写。

1
2
3
4
5
6
7
@Test
public void testEquals(){
String s3="Java";
String s4="java";
System.out.println(s3.equals(s4)); //false
System.out.println(s3.equalsIgnoreCase(s4)); //true
}

1.6 boolean contains(CharSequence s)

contains(CharSequence s) 方法在 Java 中用于判断一个字符串是否包含指定的字符序列。

1
2
3
4
@Test
public void testContains(){
System.out.println("Hello World.java".contains(".java"));
}

1.7 boolean startsWith(String prefix)

startsWith(String prefix) 方法在 Java 中用于检查字符串是否以指定的前缀开始。该方法返回一个布尔值 true 或 false,用以指示字符串是否以指定的前缀开头。

1
2
3
4
@Test
public void testStartsWith(){
System.out.println("https://camelliaxiaohua.online".startsWith("https://"));
}

1.8 boolean endsWith(String suffix)

endsWith(String suffix) 方法在 Java 中用于检查字符串是否以指定的后缀结尾。该方法返回一个布尔值 true 或 false,用以指示字符串是否以指定的后缀结尾。

1
2
3
4
@Test
public void testEndsWith(){
System.out.println("https://camelliaxiaohua.online".endsWith(".online"));
}

1.9 int compareTo(String anotherString)

compareTo(String anotherString) 方法在 Java 中用于比较两个字符串的字典顺序。它返回一个整数,表示字符串的相对顺序。

  • 返回负整数,表示当前字符串在字典顺序中位于 anotherString 之前。
  • 返回,表示两个字符串在字典顺序中相等。
  • 返回正整数,表示当前字符串在字典顺序中位于 anotherString 之后。
1
2
3
4
@Test
public void testCompareTo(){
System.out.println("apple".compareTo("banana")); //-1
}

1.10 int compareToIgnoreCase(String str)

compareToIgnoreCase(String str)方法在 Java 中用于比较两个字符串的字典顺序,忽略大小写。它返回一个整数,表示字符串的相对顺序。

1
2
3
4
5
@Test
public void testCompareToIgnoreCase(){
System.out.println("apple".compareTo("Apple")); // 32
System.out.println("apple".compareToIgnoreCase("Apple")); // 0
}

1.11 int indexOf(String str)

indexOf(String str) 方法在 Java 中用于查找子字符串在字符串中首次出现的索引位置。如果子字符串不在字符串中,则返回-1。

1
2
3
4
@Test
public void testIndesOf(){
System.out.println("重剑无锋,大巧无工。".indexOf("锋")); //3
}

1.12 int indexOf(String str , int fromIndex)

indexOf(String str, int fromIndex) 方法在 Java 中用于查找子字符串在字符串中首次出现的索引位置,从指定的索引位置开始。如果子字符串不在字符串中,则返回-1。

1
2
3
4
@Test
public void testIndesOf(){
System.out.println("重剑无锋,大巧无工。".indexOf("工",5)); // 8
}

1.13 int lastIndexOf(String str)

lastIndexOf(String str) 方法在 Java 中用于查找子字符串在字符串中最后一次出现的索引位置。如果子字符串不在字符串中,则返回-1。

1
2
3
4
@Test
public void testLastIndexOf(){
System.out.println("javac++andmysqlc++".lastIndexOf("c++")); //15
}

1.14 int lastIndexOf(String str, int fromIndex)

lastIndexOf(String str, int fromIndex) 方法在 Java 中用于查找子字符串在字符串中最后一次出现的索引位置,从指定的索引位置开始向前查找。如果子字符串不在字符串中,则返回-1。

1
2
3
4
@Test
public void testLastIndexOf(){
System.out.println("javac++andmysqlc++".lastIndexOf("c++",14)); //4
}

二、第二部分

2.1 char[] toCharArray()

toCharArray() 方法在 Java 中用于将字符串转换为一个新的字符数组。该方法返回一个字符数组,其中包含此字符串中的每个字符。

1
2
3
4
5
6
7
@Test
public void testToCharArray(){
char[] charArray = "重剑无锋,大巧无工。".toCharArray();
for(char ch: charArray){
System.out.print(ch+"\t");
}
}

2.2 String toLowerCase()

toLowerCase() 方法在 Java 中用于将字符串转换为小写形式。该方法返回一个新的字符串,表示将此字符串中的所有字符都转换为小写后的结果。

1
2
3
4
@Test
public void testToLowerCase(){
System.out.println("Camellia.xiaohua".toLowerCase());
}

2.3 String toUpperCase()

toUpperCase() 方法在 Java 中用于将字符串转换为大写形式。该方法返回一个新的字符串,表示将此字符串中的所有字符都转换为大写后的结果。

1
2
3
4
@Test
public void testToUpperCase(){
System.out.println("Camellia.xiaohua".toUpperCase());
}

2.4 String concat(String str)以及和 + 的区别

  1. concat(String str) 方法在 Java 中用于将指定的字符串连接到此字符串的末尾。该方法返回一个新的字符串,表示将指定字符串连接到此字符串末尾后的结果。
  2. 和 + 号的区别
    • +既可以求和,也可以进行字符串的拼接,底层拼接时会创建String Builder对象进行拼接,然后通过调用toString转成字符串。
    • +拼接null时不会出现空指针异常
    • concat方法参数只能是字符串类型,拼接时不会创建StringBulider对象,拼接完成后直接返回一个新的String对象。
    • concat拼接null会出现空指针异常
    • +使用较多,如果进行大量字符拼接,这两个都不合适。
1
2
3
4
@Test
public void testConcat(){
System.out.println("重剑无锋,".concat("大巧无工。"));
}

2.5 String substring(int beginIndex)

substring(int beginIndex) 方法在 Java 中用于返回一个新的字符串,该字符串是从指定的 beginIndex 开始到此字符串末尾的一个子字符串。

1
2
3
4
@Test
public void testSubstring(){
System.out.println("https://camelliaxiaohua.online".substring(8)); //camelliaxiaohua.online
}

2.6 String substring(int beginIndex,int endIndex)

substring(int beginIndex, int endIndex) 方法在 Java 中用于返回一个新的字符串,该字符串是从指定的 beginIndex 开始到指定的 endIndex 结束的一个子字符串。

注意,子字符串包括 beginIndex 处的字符,但不包括endIndex处的字符。

1
2
3
4
@Test
public void testSubstring(){
System.out.println("https://camelliaxiaohua.online/archives/".substring(31,39)); //archives
}

2.7 String trim()

trim() 方法在 Java 中用于移除字符串两端的空白字符,包括空格、制表符(Tab)、换行符等。该方法返回一个新的字符串,表示移除两端空白字符后的结果。

1
2
3
4
5
@Test
public void testTrim(){
String s1=" 重剑无锋 大巧无工 ";
System.out.println(s1.trim());
}

去除字符串的前后空白
注意:trim()方法只能去除什么空白?ASCII码的空白以及制表符tab。(无法去除全角空白)

2.8 String strip()

strip() 方法在 Java 中用于移除字符串两端的空白字符,包括空格、制表符(Tab)、换行符等。
这个方法与 trim() 类似,但在处理空白字符上更加全面和严格。strip() 方法是在 Java 11 中引入的。

1
2
3
4
5
@Test
public void testStrip(){
String s1="\u3000\u3000重剑无锋 大巧无工\u3000\u3000";
System.out.println(s1.strip());
}

strip可以处理全角空格,但是性能比trim弱。
一般很少使用全角空格,所以推荐trim。

2.9 String stripLeading()

stripLeading() 方法在 Java 中用于移除字符串前端的空白字符,包括空格、制表符(Tab)、换行符等。

1
2
3
4
5
@Test
public void testStripLeading(){
String s1=" 重剑无锋 大巧无工 ";
System.out.println(s1.stripLeading());
}

2.10 Stirng stripTrailing()

stripTrailing() 方法在 Java 中用于移除字符串后端的空白字符,包括空格、制表符(Tab)、换行符等。

1
2
3
4
5
@Test
public void testStripTrailing(){
String s1=" 重剑无锋 大巧无工 ";
System.out.println(s1.stripTrailing());
}

2.11 String intern()

intern() 方法在 Java 中用于将字符串放入字符串池(string pool)中,并返回字符串池中的字符串引用。字符串池是 JVM 内部维护的一组唯一字符串对象,目的是为了优化内存使用和提高性能。

  • 返回值
    1. 如果字符串池中已经包含了与该字符串内容相同的字符串,则返回池中的该字符串的引用;
    2. 否则,将该字符串添加到字符串池中,并返回其引用。

工作原理

  1. 字符串常量池:在 Java 中,字符串常量池是一个专门存储字符串常量的区域。当你使用字面量创建字符串时,这个字符串会被自动放入字符串池中。
  2. 字符串池:当你通过 new 关键字创建字符串时,会在堆内存中创建一个新的字符串对象,不会自动将其放入字符串池中。调用 intern() 方法可以手动将其放入字符串池中。
1
2
3
4
5
6
7
8
@Test
public void testIntern(){
byte[] bytes={97,98,99,100};
String s1=new String(bytes);
s1.intern();
String s2="abcd";
System.out.println(s1==s2);
}

三、第三部分(静态方法,直接用类名调用)

3.1 static String join(CharSequence d,CharSequence…elements)

join(CharSequence delimiter, CharSequence... elements) 是 Java 中String类的一个静态方法,
用于将多个CharSequence元素连接成一个字符串,中间用指定的分隔符分隔。这个方法是在 Java 8 中引入的,
非常方便用于构建带有分隔符的字符串,例如构建 CSV 行或路径等。

1
2
3
4
5
6
7
8
9
10
@Test
public void testJoin(){
String join = String.join("、", "Java", "C++", "PHP", "Go", "C#");
System.out.println(join);
String year="2002";
String month="10";
String day="01";
String s = String.join("/", year, month, day);
System.out.println(s);
}

3.2 static String join(CharSequence delimiter,Iterable<? extends CharSequence> elements)

join(CharSequence delimiter, Iterable<? extends CharSequence> elements) 是 Java 中 String 类的一个静态方法,
用于将多个 CharSequence 元素连接成一个字符串,中间用指定的分隔符分隔。这个方法是在 Java 8 中引入的,
与上一个方法相似,但它接受一个 Iterable 对象作为参数,可以方便地处理集合类

1
2
3
4
5
6
7
8
9
@Test
public void testJoin(){
//创建一个集合
List list =new ArrayList();
list.add("camellia");
list.add("xiao");
list.add("hua");
System.out.println(String.join("-", list));
}

3.3 static String valueOf()

valueOf() 方法是 Java 中 String 类的静态方法之一,用于将其他数据类型转换为字符串。

  1. public static String valueOf(boolean b)
  2. public static String valueOf(char c)
  3. public static String valueOf(char[] data)
  4. public static String valueOf(char[] data, int offset, int count)
  5. public static String valueOf(double d)
  6. public static String valueOf(float f)
  7. public static String valueOf(int i)
  8. public static String valueOf(long l)
  9. public static String valueOf(Object obj)