Java 中的 String
类是不可变的字符序列,提供了丰富的内置方法用于字符串操作。掌握这些方法对于日常开发非常重要。
一、字符串创建
String s1 = "Hello World"; // 直接赋值
String s2 = new String("Java"); // new 关键字创建
二、常用 String 方法
1. 获取长度
int len = s1.length(); // 返回字符串长度
2. 字符获取
char ch = s1.charAt(0); // 获取指定索引处字符,索引从0开始
3. 字符串比较
s1.equals(s2); // 内容比较,区分大小写
s1.equalsIgnoreCase(s2);// 忽略大小写比较
4. 查找子串
int index = s1.indexOf("World"); // 返回子串首次出现位置,找不到返回-1
int lastIndex = s1.lastIndexOf("l"); // 返回子串最后一次出现位置
5. 字符串截取
String sub1 = s1.substring(6); // 从索引6开始截取到末尾
String sub2 = s1.substring(0, 5); // 截取索引0到4的字符(不包含5)
6. 字符串拼接
String s3 = s1.concat("!!!"); // 连接字符串
String s4 = s1 + "!!!"; // 使用 + 连接更常用
7. 字符串替换
String replaced = s1.replace('l', 'x'); // 替换所有字符'l'为'x'
String replacedStr = s1.replace("World", "Java"); // 替换子串
8. 去除空白
String s = " hello ";
String trimmed = s.trim(); // 去除首尾空白
9. 字符串分割
String[] parts = "a,b,c".split(","); // 按逗号分割,返回字符串数组
10. 转换大小写
String upper = s1.toUpperCase(); // 转大写
String lower = s1.toLowerCase(); // 转小写
11. 判断开始和结束
boolean starts = s1.startsWith("Hello"); // 是否以"Hello"开头
boolean ends = s1.endsWith("World"); // 是否以"World"结尾
12. 判断是否包含子串
boolean contains = s1.contains("lo Wo"); // 判断是否包含该子串
三、字符串与其他类型转换
int number = Integer.parseInt("123"); // 字符串转整型
String strNum = String.valueOf(456); // 其他类型转字符串
四、字符串比较的特殊注意
- 用
==
比较字符串变量时比较的是引用地址,非内容。 - 用
equals()
方法比较字符串内容。
五、StringBuilder 和 StringBuffer
- StringBuilder 和 StringBuffer 是可变字符串类,适合频繁修改字符串的场景。
- 速度上 StringBuilder > StringBuffer(后者线程安全)。
示例:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出 Hello World
六、总结表格
方法 | 功能说明 | 示例 |
---|---|---|
length() | 字符串长度 | "abc".length() → 3 |
charAt(int index) | 返回指定位置的字符 | "abc".charAt(1) → 'b' |
equals(String s) | 内容比较 | "abc".equals("abc") → true |
indexOf(String s) | 查找子串第一次出现位置 | "abcabc".indexOf("bc") → 1 |
substring(int start) | 截取子串 | "abcdef".substring(2) → "cdef" |
concat(String s) | 拼接字符串 | "abc".concat("def") → "abcdef" |
replace() | 替换字符或字符串 | "hello".replace('l','p') → "heppo" |
trim() | 去除首尾空白 | " abc ".trim() → "abc" |
split(String regex) | 分割字符串 | "a,b,c".split(",") → ["a","b","c"] |
toUpperCase() | 转大写 | "abc".toUpperCase() → "ABC" |
toLowerCase() | 转小写 | "ABC".toLowerCase() → "abc" |
startsWith() | 判断开头 | "abc".startsWith("a") → true |
endsWith() | 判断结尾 | "abc".endsWith("c") → true |
contains() | 判断包含 | "abc".contains("b") → true |
如果你想要,我可以帮你准备:
- Java字符串正则表达式使用
- StringBuilder/StringBuffer进阶用法
- Java 11新增的字符串方法介绍(如
isBlank()
等)
随时告诉我!
发表回复