- 在 Java 中,字符串是由
String
类表示的,它提供了许多用于操作字符串的方法。 - 字符串在 Java 中是不可变的(immutable),这意味着一旦创建,字符串对象的内容就无法改变。
- 当对字符串进行操作时,实际上是生成了一个新的字符串对象。
1. length()
返回字符串的长度(字符数)。这个方法是 String
类的基本方法,返回值是字符串中字符的数量。
示例:
String str = "Hello, World!";
int length = str.length(); // 返回 13
注意点:
length()
返回的是字符的数量,不等于字节数。在一些字符编码(如 UTF-8)下,一个字符可能占用多个字节。
2. charAt(int index)
返回指定索引位置的字符(索引从 0 开始)。
示例:
String str = "Hello";
char ch = str.charAt(1); // 返回 'e'
注意点:
- 如果
index
超出字符串范围(即小于 0 或大于等于字符串长度),将抛出StringIndexOutOfBoundsException
异常。
3. substring(int start)
和 substring(int start, int end)
substring(int start)
:返回从指定的起始索引开始到字符串末尾的子字符串。substring(int start, int end)
:返回从start
索引到end
索引之间的子字符串(end
索引处的字符不包括在内)。
示例:
String str = "Hello, World!";
String sub1 = str.substring(7); // 返回 "World!"
String sub2 = str.substring(0, 5); // 返回 "Hello"
注意点:
start
可以为 0,也可以为大于 0 的值,但不能超过字符串长度。end
必须大于start
且不能超过字符串的长度。如果start
和end
相等,返回的字符串为空。substring
会创建一个新的字符串对象,原字符串不受影响。
4. contains(CharSequence sequence)
判断字符串是否包含指定的子字符串。
示例:
String str = "Hello, World!";
boolean contains = str.contains("World"); // 返回 true
注意点:
- 该方法区分大小写。
- 如果传入的是
null
,则会抛出NullPointerException
。
5. startsWith(String prefix)
判断字符串是否以指定的前缀开始。
示例:
String str = "Hello, World!";
boolean startsWith = str.startsWith("Hello"); // 返回 true
注意点:
- 如果传入的前缀为
null
,会抛出NullPointerException
。 startsWith
要注意区分大小写。
6. endsWith(String suffix)
判断字符串是否以指定的后缀结束。
示例:
String str = "Hello, World!";
boolean endsWith = str.endsWith("!"); // 返回 true
注意点:
- 如果传入的后缀为
null
,会抛出NullPointerException
。 endsWith
要注意区分大小写。
7. indexOf(int ch)
和 indexOf(String str)
indexOf(int ch)
:返回指定字符在字符串中首次出现的位置(索引)。indexOf(String str)
:返回指定子字符串在字符串中首次出现的位置。 示例:
String str = "Hello, World!";
int index1 = str.indexOf('o'); // 返回 4
int index2 = str.indexOf("World"); // 返回 7
注意点:
- 如果指定的字符或子字符串不存在,
indexOf
会返回-1
。 - 如果参数为
null
,会抛出NullPointerException
。
8. lastIndexOf(int ch)
和 lastIndexOf(String str)
lastIndexOf(int ch)
:返回指定字符在字符串中最后一次出现的位置。lastIndexOf(String str)
:返回指定子字符串在字符串中最后一次出现的位置。
示例:
String str = "Hello, World!";
int lastIndex1 = str.lastIndexOf('o'); // 返回 8
int lastIndex2 = str.lastIndexOf("World"); // 返回 7
注意点:
lastIndexOf
在如果指定的字符或子字符串不存在时会返回-1
。
9. replace(CharSequence target, CharSequence replacement)
替换字符串中所有出现的目标子字符串为指定的替换字符串。
示例:
String str = "Hello, World!";
String replaced = str.replace("World", "Java"); // 返回 "Hello, Java!"
注意点:
replace
方法会生成一个新的字符串,原字符串不变。- 替换时会区分大小写。
10. toLowerCase()
和 toUpperCase()
将字符串转换为小写或大写。
示例:
String str = "Hello, World!";
String lower = str.toLowerCase(); // 返回 "hello, world!"
String upper = str.toUpperCase(); // 返回 "HELLO, WORLD!"
注意点:
toLowerCase()
和toUpperCase()
会返回一个新字符串,不会修改原字符串。
11. trim()
移除字符串前后空格。
示例:
String str = " Hello, World! ";
String trimmed = str.trim(); // 返回 "Hello, World!"
注意点:
- 该方法只会移除字符串前后的空格,不能去除中间的空格。
trim()
会返回一个新的字符串。
12. split(String regex)
根据正则表达式将字符串拆分成多个部分,并返回一个字符串数组。
示例:
String str = "apple,banana,orange";
String[] fruits = str.split(","); // 返回 ["apple", "banana", "orange"]
注意点:
- 如果传入的字符串为空或正则表达式有问题,会抛出
PatternSyntaxException
。 - 如果传入空字符串
""
,则会把每个字符都拆分成单个元素。
13. join(CharSequence delimiter, CharSequence... elements)
使用指定的分隔符将多个字符串连接成一个字符串。
示例:
String result = String.join(", ", "apple", "banana", "orange");
// 返回 "apple, banana, orange"
注意点:
String.join()
是 Java 8 引入的静态方法,适用于拼接多个字符串。- 需要提供一个分隔符(如
", "
),否则会直接连接字符串。
14. valueOf()
将其他类型转换为字符串。适用于基本数据类型和对象。
示例:
int number = 123;
String str = String.valueOf(number); // 返回 "123"
注意点:
- 对象为
null
时,String.valueOf()
会返回字符串"null"
,而toString()
会抛出NullPointerException
。
15. format(String format, Object... args)
使用指定的格式字符串创建一个新的字符串。
示例:
String str = String.format("Name: %s, Age: %d", "John", 25);
// 返回 "Name: John, Age: 25"
注意点:
- 格式化字符串与
printf
类似,支持占位符(如%s
、%d
等)。 - 不正确的格式会抛出
java.util.FormatFlagsConversionException
异常。
16. compareTo(String anotherString)
和 compareToIgnoreCase(String anotherString)
比较两个字符串的字典顺序。compareTo
考虑大小写,compareToIgnoreCase
忽略大小写。
示例:
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2); // 返回负数,因为 "apple" < "banana"
注意点:
compareTo
返回值的含义:- 负数:表示当前字符串小于目标字符串。
- 0:表示两个字符串相等。
- 正数:表示当前字符串大于目标字符串。
17. matches(String regex)
判断字符串是否匹配给定的正则表达式。
示例:
String str = "hello123";
boolean matches = str.matches("[a-z]+\\d+"); // 返回 true
注意点:
- 该方法用于完全匹配整个字符串与正则表达式,不能仅对部分内容匹配。
18. isEmpty()
判断字符串是否为空字符串(即长度为 0)。
示例:
String str = "";
boolean isEmpty = str.isEmpty(); // 返回 true
注意点:
isEmpty()
判断的是字符串是否长度为 0,而不是null
。如果需要判断是否为null
或空字符串,可以使用str == null || str.isEmpty()
。
19. equals(Object anObject)
比较两个字符串是否相等,比较的是内容是否相同。
示例:
String str1 = "Hello";
String str2 = "Hello";
boolean equals = str1.equals(str2); // 返回 true
注意点:
equals()
方法会比较两个字符串的内容是否完全一致。区分大小写。
20. equalsIgnoreCase(String anotherString)
比较两个字符串是否相等,忽略大小写。
示例:
String str1 = "Hello";
String str2 = "hello";
boolean equalsIgnoreCase = str1.equalsIgnoreCase(str2); // 返回 true
注意点:
equalsIgnoreCase
忽略大小写进行比较,但其他差异仍会被检测到。
评论留言
欢迎您,!您可以在这里畅言您的的观点与见解!
0 条评论