java.lang.String是 Java 中最核心的字符串操作类,其方法覆盖字符串判断、查找、截取、替换、转换、拼接等核心场景,以下按功能分类总结最常用的语法 / 方法,附示例和关键说明:
一、基础属性 / 构造(初始化 / 核心属性)
1. 字符串初始化
// 直接赋值(推荐,复用常量池)Strings1="hello";// 构造方法(新对象,极少用)Strings2=newString("hello");Strings3=newString(newchar[]{'h','e','l','l','o'});// 字符数组转字符串2. 核心属性(只读)
Strings="hello";intlen=s.length();// 获取长度:5(注意区别于数组的length属性)booleanempty=s.isEmpty();// 判断是否为空字符串(长度为0):false二、字符串判断 / 比较(相等、包含、匹配)
| 方法 | 功能说明 | 示例 |
|---|---|---|
equals(Object obj) | 严格比较内容(区分大小写) | "abc".equals("ABC") → false |
equalsIgnoreCase(String str) | 忽略大小写比较内容 | "abc".equalsIgnoreCase("ABC") → true |
contains(CharSequence s) | 判断是否包含子串 | "hello".contains("el") → true |
startsWith(String prefix) | 判断是否以指定前缀开头 | "hello".startsWith("he") → true |
endsWith(String suffix) | 判断是否以指定后缀结尾 | "hello".endsWith("lo") → true |
matches(String regex) | 正则表达式匹配 | "123".matches("\\d+") → true |
compareTo(String another) | 按 Unicode 值比较大小(字典序) | "a".compareTo("b") → -1 |
关键注意:
equals避免空指针:建议用常量串在前,如"abc".equals(s)(s 为 null 时返回 false,而非 NPE);==比较的是对象地址,切勿用 == 比较字符串内容。
三、字符串查找 / 索引(定位字符 / 子串)
| 方法 | 功能说明 | 示例 |
|---|---|---|
charAt(int index) | 获取指定索引的字符(索引从 0 开始) | "hello".charAt(1) → 'e' |
indexOf(String str) | 查找子串首次出现的索引(无则 - 1) | "hello".indexOf("l") → 2 |
indexOf(String str, int fromIndex) | 从指定索引开始查找 | "hello".indexOf("l",3) → 3 |
lastIndexOf(String str) | 查找子串最后出现的索引 | "hello".lastIndexOf("l") → 3 |
isEmpty() | 判断是否为空串(长度 0) | "" .isEmpty() → true |
isBlank()(Java 11+) | 判断是否为空白串(含空格 / 换行) | " \n".isBlank() → true |
四、字符串截取 / 拆分(分割、截取子串)
1. 截取子串
Strings="hello-world";Stringsub1=s.substring(2);// 从索引2截取到末尾:"llo-world"Stringsub2=s.substring(2,5);// [2,5)左闭右开:"llo"2. 拆分字符串
| 方法 | 功能说明 | 示例 |
|---|---|---|
split(String regex) | 按正则拆分(默认全拆分) | "a,b,c".split(",") → ["a","b","c"] |
split(String regex, int limit) | 限制拆分次数 | "a,b,c".split(",",2) → ["a","b,c"] |
注意:
拆分特殊字符(如.、|)需转义:"a.b.c".split("\\.")。
五、字符串替换 / 修改(不可变,返回新串)
String 是不可变对象,所有修改方法均返回新字符串,原字符串不变。
| 方法 | 功能说明 | 示例 |
|---|---|---|
replace(char old, char new) | 替换所有指定字符 | "hello".replace('l','x') → "hexxo" |
replace(CharSequence old, CharSequence new) | 替换所有指定子串 | "hello".replace("ll","xx") → "hexxo" |
replaceFirst(String regex, String replacement) | 替换首个匹配的正则子串 | "a,b,c".replaceFirst(",","-") → "a-b,c" |
replaceAll(String regex, String replacement) | 替换所有匹配的正则子串 | "a1b2c".replaceAll("\\d","*") → "a*b*c" |
trim() | 去除首尾空格(不含换行 / 制表符) | " hello ".trim() → "hello" |
strip()(Java 11+) | 去除首尾所有空白字符(含换行 / 制表符) | " \nhello\t".strip() → "hello" |
六、字符串转换(大小写、数组、编码)
1. 大小写转换
Strings="Hello";Stringupper=s.toUpperCase();// "HELLO"Stringlower=s.toLowerCase();// "hello"2. 转字符数组 / 字节数组
char[]charArr="hello".toCharArray();// ['h','e','l','l','o']byte[]byteArr="hello".getBytes();// 按默认编码转字节数组byte[]byteArrUtf8="hello".getBytes(StandardCharsets.UTF_8);// 指定UTF-8编码3. 静态转换方法(其他类型转字符串)
Strings1=String.valueOf(123);// 数字转字符串:"123"Strings2=String.valueOf(true);// 布尔值转字符串:"true"Strings3=String.valueOf(newchar[]{'a','b'});// 字符数组转字符串:"ab"七、字符串拼接(高效选择)
1. 基础拼接(少量拼接)
Strings="hello"+"world";// 编译期优化,等价于"helloworld"Strings2="hello"+123;// 自动转字符串:"hello123"2. 高效拼接(大量拼接)
频繁拼接用StringBuilder/StringBuffer(前者非线程安全,后者线程安全):
StringBuildersb=newStringBuilder();sb.append("hello").append("world").append(123);Stringres=sb.toString();// "helloworld123"八、其他常用方法
| 方法 | 功能说明 | 示例 |
|---|---|---|
concat(String str) | 拼接字符串(等价于 +,极少用) | "hello".concat("world") → "helloworld" |
toCharArray() | 转为字符数组 | "abc".toCharArray() → ['a','b','c'] |
format(String format, Object... args) | 格式化字符串 | String.format("name:%s,age:%d","Tom",18) → "name:Tom,age:18" |
九、核心避坑点
- 不可变性:所有修改方法(如
replace、substring)均返回新串,原串不变; - 常量池复用:直接赋值
String s = "abc"复用常量池,new String("abc")创建新对象; - 空指针风险:调用
null字符串的方法(如null.length())会抛NullPointerException; - 性能优化:大批量拼接用
StringBuilder,避免频繁创建 String 对象。
十、高频示例
1. 校验字符串是否为纯数字
publicstaticbooleanisAllDigit(Strings){if(s==null||s.isEmpty())returnfalse;for(charch:s.toCharArray()){if(!Character.isDigit(ch))returnfalse;}returntrue;}2. 反转字符串
publicstaticStringreverse(Strings){returnnewStringBuilder(s).reverse().toString();}3. 去除字符串中所有空格
publicstaticStringremoveAllSpace(Strings){returns.replaceAll("\\s","");}以上是 String 最常用的语法,覆盖开发中 90% 以上的字符串操作场景,核心记住不可变性和方法返回新串两个关键点。