String类的核心方法

一.长度和空值判断

length() - 字符串长度

String str = "Hello";
int len = str.length();  // 5

isEmpty() - 是否为空

String s1 = "";
String s2 = "Hello";
s1.isEmpty();  // true
s2.isEmpty();  // false

isBlank() - 是否空白(Java 11+)

String s1 = "   ";
String s2 = "Hello";
s1.isBlank();  // true(只包含空白字符)
s2.isBlank();  // false

二.字符访问

charAt() - 获取指定位置字符

String str = "Hello";
char c = str.charAt(1);  // 'e'

codePointAt() - 获取字符的 Unicode 代码点

String str = "A";
int code = str.codePointAt(0);  // 65

toCharArray() - 转换为 char 数组

String str = "Hello";
char[] chars = str.toCharArray();  // ['H','e','l','l','o']

三.字符串比较

equals() - 内容比较

String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");

s1.equals(s2);     // true
s1.equals(s3);     // true(比较内容)
s1 == s2;          // true(常量池相同引用)
s1 == s3;          // false(不同对象)

equalsIgnoreCase() - 忽略大小写比较

String s1 = "Hello";
String s2 = "HELLO";
s1.equalsIgnoreCase(s2);  // true

compareTo() - 字典顺序比较

String s1 = "abc";
String s2 = "abd";
String s3 = "abb";

s1.compareTo(s2);  // -1(s1 < s2)
s1.compareTo(s3);  // 1(s1 > s3)
s1.compareTo("abc"); // 0(相等)

compareToIgnoreCase() - 忽略大小写比较

String s1 = "ABC";
String s2 = "abc";
s1.compareToIgnoreCase(s2);  // 0

四.字符串查找

contains() - 是否包含子串

String str = "Hello World";
boolean hasHello = str.contains("Hello");  // true
boolean hasJava = str.contains("Java");    // false

indexOf() - 查找子串位置

String str = "Hello World";
int pos1 = str.indexOf('o');        // 4(第一个'o'的位置)
int pos2 = str.indexOf('o', 5);     // 7(从位置5开始找)
int pos3 = str.indexOf("World");    // 6
int pos4 = str.indexOf("Java");     // -1(未找到)

lastIndexOf() - 从后往前查找

String str = "Hello World";
int pos1 = str.lastIndexOf('o');    // 7(最后一个'o')
int pos2 = str.lastIndexOf("lo");   // 3

startsWith() - 是否以指定字符串开头

String str = "Hello World";
str.startsWith("Hello");    // true
str.startsWith("He", 0);    // true
str.startsWith("World", 6); // true(从位置6开始)

endsWith() - 是否以指定字符串结尾

String str = "Hello World";
str.endsWith("World");  // true
str.endsWith("lo");     // false

五.字符串截取和拆分

substring() - 截取子串

String str = "Hello World";
String sub1 = str.substring(6);     // "World"(从6到最后)
String sub2 = str.substring(0, 5);  // "Hello"([0,5))

split() - 分割字符串

String str = "apple,banana,orange";
String[] fruits = str.split(",");      // ["apple","banana","orange"]

// 限制分割次数
String[] parts = str.split(",", 2);    // ["apple","banana,orange"]

// 使用正则表达式
String str2 = "a b  c   d";
String[] words = str2.split("\\s+");   // ["a","b","c","d"]

join() - 连接字符串(Java 8+)

String[] arr = {"A", "B", "C"};
String result = String.join("-", arr);  // "A-B-C"

List<String> list = Arrays.asList("X", "Y", "Z");
String result2 = String.join(", ", list);  // "X, Y, Z"

六.字符串替换

replace() - 字符/字符串替换

String str = "Hello World";
String newStr1 = str.replace('l', 'L');  // "HeLLo WorLd"
String newStr2 = str.replace("World", "Java");  // "Hello Java"

replaceAll() - 正则表达式替换

String str = "a1b2c3";
String newStr = str.replaceAll("\\d", "*");  // "a*b*c*"

// 删除所有空格
String str2 = "a b c d";
String noSpace = str2.replaceAll("\\s+", "");  // "abcd"

replaceFirst() - 替换第一个匹配

String str = "aaabbbaaa";
String newStr = str.replaceFirst("aaa", "XXX");  // "XXXbbbaaa"

strip() - 去除两端空白(Java 11+)

String str = "  Hello World  ";
String stripped = str.strip();  // "Hello World"

// 还有特定方向的去除
str.stripLeading();  // "Hello World  "(去左空白)
str.stripTrailing(); // "  Hello World"(去右空白)

七.大小写转换

toLowerCase() - 转换为小写

String str = "Hello WORLD";
String lower = str.toLowerCase();  // "hello world"

toUpperCase() - 转换为大写

String str = "Hello World";
String upper = str.toUpperCase();  // "HELLO WORLD"

八.去除空格

trim() - 去除两端空格

String str = "  Hello World  ";
String trimmed = str.trim();  // "Hello World"

九.格式化方法

format() - 格式化字符串

String formatted = String.format("姓名:%s,年龄:%d", "张三", 25);
// "姓名:张三,年龄:25"

formatted() - 实例方法(Java 15+)

String template = "欢迎 %s!";
String result = template.formatted("用户");  // "欢迎 用户!"

十.类型转换

valueOf() - 转换为字符串

String s1 = String.valueOf(123);      // "123"
String s2 = String.valueOf(45.67);    // "45.67"
String s3 = String.valueOf(true);     // "true"
String s4 = String.valueOf(new char[]{'a','b'});  // "ab"

toString() - 对象字符串表示

String str = "Hello";
String s = str.toString();  // "Hello"(String本身就是字符串)

getBytes() - 转换为字节数组

String str = "Hello";
byte[] bytes1 = str.getBytes();            // 默认编码
byte[] bytes2 = str.getBytes("UTF-8");     // 指定编码

十一.正则表达式方法

matches() - 正则匹配

String str = "12345";
boolean isNumber = str.matches("\\d+");  // true

String email = "test@example.com";
boolean isEmail = email.matches("^[\\w-]+@[\\w-]+\\.[a-z]{2,3}$");

split() - 正则分割(前面已介绍)

十二.Java 11+ 新增方法

repeat() - 重复字符串

String str = "Hi";
String repeated = str.repeat(3);  // "HiHiHi"

lines() - 获取行流

String text = "第一行\n第二行\n第三行";
text.lines().forEach(System.out::println);
// 输出:
// 第一行
// 第二行
// 第三行

indent() - 缩进调整

String str = "Hello\nWorld";
String indented = str.indent(2);
// "  Hello\n  World\n"

十三. 其他实用方法

intern() - 加入字符串常量池

String s1 = new String("Hello");
String s2 = s1.intern();  // 返回常量池中的引用

concat() - 连接字符串

String s1 = "Hello";
String s2 = " World";
String result = s1.concat(s2);  // "Hello World"

subSequence() - 获取字符序列

String str = "Hello World";
CharSequence seq = str.subSequence(0, 5);  // "Hello"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值