Java String 类
String 类是 Java 中最常用的类之一,用于表示和操作字符串。与其他类不同,String 是不可变的(immutable),即一旦创建了 String 对象,它的内容就不能更改。String 类位于 java.lang 包下。
1. String 类概述
String类用于表示一系列字符。- 字符串在 Java 中是对象,但它们有一些特殊的处理方式。
String是不可变的,这意味着任何对字符串的修改都会生成一个新的字符串,而不会改变原来的字符串。- 字符串使用 UTF-16 编码存储。
2. 常用的 String 类方法
2.1 创建字符串
- 使用字面量:
String str = "Hello";
- 使用
new关键字:
String str = new String("Hello");
2.2 获取字符串的长度
length()方法返回字符串的长度(字符数)。
String str = "Hello";
System.out.println(str.length()); // 输出 5
2.3 字符串拼接
- 使用
+运算符:
String str1 = "Hello";
String str2 = " World!";
String result = str1 + str2;
System.out.println(result); // 输出 "Hello World!"
- 使用
concat()方法:
String result = str1.concat(str2);
System.out.println(result); // 输出 "Hello World!"
2.4 字符串比较
equals():比较两个字符串的内容是否相同(区分大小写)。
String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equals(str2)); // 输出 false
equalsIgnoreCase():比较两个字符串的内容是否相同(忽略大小写)。
System.out.println(str1.equalsIgnoreCase(str2)); // 输出 true
compareTo():按字典顺序比较两个字符串。如果当前字符串小于目标字符串,返回负数;等于返回 0;大于返回正数。
String str1 = "abc";
String str2 = "xyz";
System.out.println(str1.compareTo(str2)); // 输出负数,因为 "abc" 小于 "xyz"
2.5 字符串查找
indexOf():查找子字符串或字符第一次出现的位置。
String str = "Hello World";
System.out.println(str.indexOf('o')); // 输出 4
System.out.println(str.indexOf("World")); // 输出 6
lastIndexOf():查找子字符串或字符最后一次出现的位置。
System.out.println(str.lastIndexOf('o')); // 输出 7
2.6 截取字符串
substring():从指定位置开始截取字符串。
String str = "Hello World";
String substr = str.substring(6);
System.out.println(substr); // 输出 "World"
String substr2 = str.substring(0, 5);
System.out.println(substr2); // 输出 "Hello"
2.7 字符串替换
replace():替换指定的字符或子字符串。
String str = "Hello World";
String result = str.replace("World", "Java");
System.out.println(result); // 输出 "Hello Java"
2.8 字符串去除空白字符
trim():去除字符串前后的空白字符(如空格、换行等)。
String str = " Hello World ";
System.out.println(str.trim()); // 输出 "Hello World"
2.9 转换字符串大小写
toLowerCase():将字符串转换为小写字母。
String str = "HELLO";
System.out.println(str.toLowerCase()); // 输出 "hello"
toUpperCase():将字符串转换为大写字母。
String str = "hello";
System.out.println(str.toUpperCase()); // 输出 "HELLO"
2.10 字符串连接(StringBuilder/StringBuffer)
由于字符串是不可变的,每次拼接字符串都会创建新的对象,这会导致性能开销。如果需要频繁拼接字符串,可以使用 StringBuilder 或 StringBuffer 类。
StringBuilder和StringBuffer:这两个类提供了可变的字符串,可以高效地进行拼接操作。
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出 "Hello World"
2.11 转换为字符数组
toCharArray():将字符串转换为字符数组。
String str = "Hello";
char[] charArray = str.toCharArray();
System.out.println(charArray); // 输出 "Hello"
2.12 字符串的分割
split():根据指定的分隔符将字符串分割成多个部分,返回一个字符串数组。
String str = "apple,banana,orange";
String[] fruits = str.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 输出:
// apple
// banana
// orange
3. String 类的常见实例
3.1 字符串拼接
public class StringExample {
public static void main(String[] args) {
String str1 = "Java";
String str2 = " is awesome!";
// 使用 + 运算符
String result1 = str1 + str2;
System.out.println(result1); // 输出 "Java is awesome!"
// 使用 concat() 方法
String result2 = str1.concat(str2);
System.out.println(result2); // 输出 "Java is awesome!"
}
}
3.2 字符串比较
public class StringComparisonExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "hello";
// 使用 equals() 比较
System.out.println(str1.equals(str2)); // 输出 false
// 使用 equalsIgnoreCase() 比较
System.out.println(str1.equalsIgnoreCase(str2)); // 输出 true
}
}
3.3 字符串截取
public class StringSubstringExample {
public static void main(String[] args) {
String str = "Hello World";
// 截取从位置 6 到结尾的部分
String substr = str.substring(6);
System.out.println(substr); // 输出 "World"
// 截取从位置 0 到位置 5 的部分
String substr2 = str.substring(0, 5);
System.out.println(substr2); // 输出 "Hello"
}
}
3.4 字符串替换
public class StringReplaceExample {
public static void main(String[] args) {
String str = "Hello World!";
// 替换 "World" 为 "Java"
String result = str.replace("World", "Java");
System.out.println(result); // 输出 "Hello Java!"
}
}
3.5 字符串分割
public class StringSplitExample {
public static void main(String[] args) {
String str = "apple,banana,orange";
String[] fruits = str.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
4. 总结
- 不可变性:
String对象一旦创建后不可更改,每次对字符串的操作都会返回一个新的字符串。 - 常用方法:
length()、equals()、substring()、indexOf()、replace()等都是操作字符串的常用方法。 - 性能优化:频繁拼接字符串时,建议使用
StringBuilder或StringBuffer,因为它们是可变的,能够提高性能。
更多详细内容请关注其他相关文章!