在Java中,String
类是一个用于表示不可变字符串序列的类。String
类是Java标准库的一部分,属于java.lang
包,并且String
对象是不可变的,一旦创建,其内容就不能更改。String
类提供了丰富的方法来操作字符串,如查找、比较、子串、替换等。
String
类概述
- 不可变性:一旦创建
String
对象,其值不能改变。每次对String
对象的修改都会创建一个新的String
对象。 - 线程安全:由于其不可变性,
String
是线程安全的。 - 常量池:为了提高性能和减少内存开销,Java会在常量池中存储
String
字面量,这样可以重复利用相同的字符串。
常用的String
类方法
1. length()
- 描述:返回字符串的长度。
- 示例:
String str = "Hello, World!";
int length = str.length(); // 13
2. charAt(int index)
- 描述:返回指定索引处的字符。
- 示例:
String str = "Hello";
char ch = str.charAt(1); // 'e'
3. substring(int beginIndex)
, substring(int beginIndex, int endIndex)
- 描述:返回一个子字符串,从
beginIndex
开始到字符串末尾,或者到endIndex
(不包括endIndex
)。 - 示例:
String str = "Hello, World!";
String sub1 = str.substring(7); // "World!"
String sub2 = str.substring(0, 5); // "Hello"
4. contains(CharSequence sequence)
- 描述:判断字符串是否包含指定的字符序列。
- 示例:
String str = "Hello, World!";
boolean containsHello = str.contains("Hello"); // true
5. indexOf(String str)
, indexOf(String str, int fromIndex)
- 描述:返回指定子字符串在字符串中第一次出现的索引,或从指定索引开始搜索。
- 示例:
String str = "Hello, World!";
int index1 = str.indexOf("World"); // 7
int index2 = str.indexOf("o", 5); // 8
6. lastIndexOf(String str)
, lastIndexOf(String str, int fromIndex)
- 描述:返回指定子字符串在字符串中最后一次出现的索引,或从指定索引开始向后搜索。
- 示例:
String str = "Hello, World!";
int lastIndex1 = str.lastIndexOf("o"); // 8
int lastIndex2 = str.lastIndexOf("o", 7); // 4
7. equals(Object anObject)
- 描述:比较两个字符串的内容是否相同。
- 示例:
String str1 = "Hello";
String str2 = "Hello";
boolean isEqual = str1.equals(str2); // true
8. equalsIgnoreCase(String anotherString)
- 描述:忽略大小写地比较两个字符串的内容是否相同。
- 示例:
String str1 = "Hello";
String str2 = "hello";
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2); // true
9. compareTo(String anotherString)
- 描述:按字典顺序比较两个字符串。
- 示例:
String str1 = "Hello";
String str2 = "World";
int compare = str1.compareTo(str2); // -15
10. compareToIgnoreCase(String anotherString)
- 描述:忽略大小写地按字典顺序比较两个字符串。
- 示例:
String str1 = "Hello";
String str2 = "hello";
int compareIgnoreCase = str1.compareToIgnoreCase(str2); // 0
11. startsWith(String prefix)
, startsWith(String prefix, int toffset)
- 描述:判断字符串是否以指定的前缀开始。
- 示例:
String str = "Hello, World!";
boolean startsWithHello = str.startsWith("Hello"); // true
12. endsWith(String suffix)
- 描述:判断字符串是否以指定的后缀结束。
- 示例:
String str = "Hello, World!";
boolean endsWithWorld = str.endsWith("World!"); // true
13. toLowerCase()
, toUpperCase()
- 描述:返回一个新的字符串,全部字符转换为小写或大写。
- 示例:
String str = "Hello, World!";
String lowerStr = str.toLowerCase(); // "hello, world!"
String upperStr = str.toUpperCase(); // "HELLO, WORLD!"
14. trim()
- 描述:返回一个字符串,去掉前导和尾部的空格。
- 示例:
String str = " Hello, World! ";
String trimmedStr = str.trim(); // "Hello, World!"
15. replace(char oldChar, char newChar)
, replace(CharSequence target, CharSequence replacement)
- 描述:返回一个新的字符串,用新的字符或字符序列替换所有匹配的字符或字符序列。
- 示例:
String str = "Hello, World!";
String replacedStr1 = str.replace('o', 'a'); // "Hella, Warld!"
String replacedStr2 = str.replace("World", "Java"); // "Hello, Java!"
16. split(String regex)
, split(String regex, int limit)
- 描述:根据给定的正则表达式分割字符串。
- 示例:
String str = "apple,orange,banana";
String[] fruits = str.split(","); // ["apple", "orange", "banana"]
17. join(CharSequence delimiter, CharSequence... elements)
- 描述:将多个字符序列连接成一个字符串,中间使用指定的分隔符。
- 示例:
String[] words = {"Java", "is", "awesome"};
String joinedStr = String.join(" ", words); // "Java is awesome"
18. valueOf()
- 描述:返回给定类型的字符串表示形式(包括基本数据类型、对象等)。
- 示例:
int num = 123;
String numStr = String.valueOf(num); // "123"
19. isEmpty()
- 描述:判断字符串是否为空(长度为0)。
- 示例:
String str = "";
boolean isEmpty = str.isEmpty(); // true
20. format(String format, Object... args)
- 描述:使用指定格式字符串和参数返回格式化的字符串。
- 示例:
String formattedStr = String.format("Hello, %s!", "World"); // "Hello, World!"
示例代码
下面是一个包含上述方法使用示例的完整代码:
public class StringMethodsExample {
public static void main(String[] args) {
String str = "Hello, World!";
// length()
System.out.println("Length: " + str.length());
// charAt()
System.out.println("Character at index 1: " + str.charAt(1));
// substring()
System.out.println("Substring from index 7: " + str.substring(7));
System.out.println("Substring from index 0 to 5: " + str.substring(0, 5));
// contains()
System.out.println("Contains 'Hello': " + str.contains("Hello"));
// indexOf()
System.out.println("Index of 'World': " + str.indexOf("World"));
// lastIndexOf()
System.out.println("Last index of 'o': " + str.lastIndexOf("o"));
// equals()
System.out.println("Equals 'Hello, World!': " + str.equals("Hello, World!"));
// equalsIgnoreCase()
System.out.println("Equals ignore case 'hello, world!': " + str.equalsIgnoreCase("hello, world!"));
// compareTo()
System.out.println("Compare to 'Hello': " + str.compareTo("Hello"));
// compareToIgnoreCase()
System.out.println("Compare to ignore case 'hello, world!': " + str.compareToIgnoreCase("hello, world!"));
// startsWith()
System.out.println("Starts with 'Hello': " + str.startsWith("Hello"));
// endsWith()
System.out.println("Ends with 'World!': " + str.endsWith("World!"));
// toLowerCase() and toUpperCase()
System.out.println("To lower case: " + str.toLowerCase());
System.out.println("To upper case: " + str.toUpperCase());
// trim()
String strWithSpaces = " Hello, World! ";
System.out.println("Trimmed: '" + strWithSpaces.trim() + "'");
// replace()
System.out.println("Replace 'o' with 'a': " + str.replace('o', 'a'));
System.out.println("Replace 'World' with 'Java': " + str.replace("World", "Java"));
// split()
String fruits = "apple,orange,banana";
String[] fruitArray = fruits.split(",");
System.out.println("Fruits split: ");
for (String fruit : fruitArray) {
System.out.println(fruit);
}
// join()
String[] words = {"Java", "is", "awesome"};
System.out.println("Joined string: " + String.join(" ", words));
// valueOf()
int num = 123;
System.out.println("String value of num: " + String.valueOf(num));
// isEmpty()
String emptyStr = "";
System.out.println("Is empty: " + emptyStr.isEmpty());
// format()
String formattedStr = String.format("Hello, %s!", "World");
System.out.println("Formatted string: " + formattedStr);
}
}
结论
String
类在Java中是一个功能强大且常用的类,提供了许多用于字符串操作的方法。了解这些方法有助于有效地处理字符串数据。通过示例代码可以看到这些方法的实际应用,帮助开发人员在日常编程中更好地使用String
类。