目录
一、字符串创建与比较
1. String的构造方法
2. equals()与equalsIgnoreCase()
3. ==与equals()的区别
二、字符串查找与索引
1. length():获取字符串长度
2. charAt(int index):获取指定位置的字符
3. indexOf()与lastIndexOf()
4. contains():判断是否包含子串
三、字符串操作
1. substring():截取子串
2. concat()与+拼接字符串
3. replace():替换字符或子串
4. split():按正则表达式分割字符串
5. join():拼接字符串数组
四、转换与格式化
1. toUpperCase()与toLowerCase()
2. trim()与strip():去除空白
3. String.format():格式化字符串
4. valueOf():转换为字符串
五、其他实用方法
1. startsWith()与endsWith()
2. isEmpty()与isBlank()(JDK11+)
3. matches():正则匹配
六、总结
在Java编程中,String
类是最常用的类之一,用于表示和操作字符串。由于其不可变性(创建后无法修改),每次操作都会生成新的字符串对象。本文将通过代码示例详解Java中String的常用方法,帮助开发者高效处理字符串。
String
的构造方法String str1 = "Hello"; // 直接赋值(推荐)
String str2 = new String("Hello"); // 构造方法
equals()
与equalsIgnoreCase()
String s1 = "Java";
String s2 = "java";
System.out.println(s1.equals(s2)); // false
System.out.println(s1.equalsIgnoreCase(s2)); // true
==
与equals()
的区别==
比较对象地址,equals()
比较内容:String a = "hello";
String b = new String("hello");
System.out.println(a == b); // false(地址不同)
System.out.println(a.equals(b)); // true(内容相同)
length()
:获取字符串长度String str = "Hello";
System.out.println(str.length()); // 5
charAt(int index)
:获取指定位置的字符System.out.println(str.charAt(1)); // 'e'
indexOf()
与lastIndexOf()
String s = "Hello World";
System.out.println(s.indexOf('l')); // 2
System.out.println(s.indexOf("World")); // 6
System.out.println(s.lastIndexOf('l')); // 9
contains()
:判断是否包含子串System.out.println(s.contains("Hello")); // true
substring()
:截取子串String str = "HelloWorld";
System.out.println(str.substring(5)); // "World"(从索引5到末尾)
System.out.println(str.substring(0, 5)); // "Hello"(索引0到4)
concat()
与+
拼接字符串String s1 = "Hello";
String s2 = s1.concat(" World"); // "Hello World"
String s3 = s1 + " Java"; // "Hello Java"
replace()
:替换字符或子串String s = "apple";
System.out.println(s.replace('p', 'b')); // "abble"
System.out.println(s.replace("apple", "banana")); // "banana"
split()
:按正则表达式分割字符串String data = "Java,PHP,Python";
String[] arr = data.split(","); // ["Java", "PHP", "Python"]
// 分割IP地址需转义
String ip = "192.168.1.1";
String[] nums = ip.split("\\.");
join()
:拼接字符串数组String[] langs = {"Java", "C++", "Python"};
String joined = String.join(" | ", langs); // "Java | C++ | Python"
toUpperCase()
与toLowerCase()
String s = "Hello";
System.out.println(s.toUpperCase()); // "HELLO"
System.out.println(s.toLowerCase()); // "hello"
trim()
与strip()
:去除空白trim()
去除首尾空格:String s = " Java ";
System.out.println(s.trim()); // "Java"
strip()
(JDK11+)支持Unicode空格:System.out.println(s.strip()); // "Java"
String.format()
:格式化字符串String name = "Alice";
int age = 25;
String info = String.format("Name: %s, Age: %d", name, age);
// "Name: Alice, Age: 25"
valueOf()
:转换为字符串int num = 123;
String str = String.valueOf(num); // "123"
startsWith()
与endsWith()
String s = "HelloWorld";
System.out.println(s.startsWith("Hello")); // true
System.out.println(s.endsWith("ld")); // true
isEmpty()
与isBlank()
(JDK11+)String s1 = "";
String s2 = " ";
System.out.println(s1.isEmpty()); // true
System.out.println(s2.isBlank()); // true(仅空白字符)
matches()
:正则匹配String email = "[email protected]";
boolean isValid = email.matches("^[\\w.-]+@[\\w.-]+\\.[a-z]{2,6}$");
Java的String
类提供了丰富的方法来简化字符串操作。掌握这些方法能大幅提升开发效率,但需注意不可变性带来的性能问题,在频繁修改时建议使用StringBuilder
。建议通过实际编码练习巩固这些方法的应用!
扩展思考:如何处理大量字符串拼接?何时应使用StringBuilder
?欢迎在评论区讨论!