目录
[1、Java 的 String 类型是不可变的](#1、Java 的 String 类型是不可变的)
3、isBlank():判断字符串是否为空或者仅包含空白字符(空格、换行)
[4、charAt(int index):获取指定索引位置的字符](#4、charAt(int index):获取指定索引位置的字符)
[1、indexof(String str):查找子串第一次出现的位置,找不到返回-1](#1、indexof(String str):查找子串第一次出现的位置,找不到返回-1)
[2、contains(charSequence s):判断是否包含某个子串](#2、contains(charSequence s):判断是否包含某个子串)
[3、startsWith(String prefix) / endsWith(String suffix): 判断是否以某前缀开头或后缀结尾。](#3、startsWith(String prefix) / endsWith(String suffix): 判断是否以某前缀开头或后缀结尾。)
[4、substring(int begin, int end): 截取子串(左闭右开区间)。](#4、substring(int begin, int end): 截取子串(左闭右开区间)。)
1、toLowerCase()/toUpperCase:转小写或大写
3、strip():去除首位空白字符(支持Unicode空白)
[4、replace(char old,char new):简单的字符或字符串替换](#4、replace(char old,char new):简单的字符或字符串替换)
[1、equals(Object obj):比较字符串内容是否相等](#1、equals(Object obj):比较字符串内容是否相等)
[2、equalsIgnoreCase(String str): 忽略大小写比较内容](#2、equalsIgnoreCase(String str): 忽略大小写比较内容)
[1、valueOf(Object obj):将其他类型转换为字符串](#1、valueOf(Object obj):将其他类型转换为字符串)
一、String的常用方法
**注意点**:
1、Java 的 String 类型是不可变的
所有字符串操作方法(如 replace()、substring()、toUpperCase() 等)都会返回新的字符串对象
如果不接收返回值,原字符串不会发生任何变化。
字符串拼接用StringBuilder,String 是不可变的,每次 + 都会创建新的 String 对象,StringBuilder 是可变的,所有操作都在同一个对象上进行。
2、==与equal()
==比较的是内存地址,equal比较的是值。
(1)常量池
java
String a="123";
String b="123";
//由于 Java 的字符串常量池机制,a 和 b 都指向内存中的同一个 "123" 对象
故a==b返回true
(2)引用类
java
String a = new String("123");
String b = new String("123");
System.out.println(a == b);
//输出flase,因为对象不一样
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b);
//也输出false
(3)自动装箱
java
Integer a = 100; // 自动装箱,会从缓存池取对象
Integer b = 100;
System.out.println(a == b); // true(-128~127 范围内的整数会被缓存)
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false(超出缓存范围,创建新对象)
3、空指针异常:
调用 s.equals("abc") 时,如果 s 为 null 会报错。建议写成 "abc".equals(s)(常量在前)。
1、基本信息与判断
1、length():获取字符串长度
java
String a="12345";
System.out.println(a.length());
//输出5
2、isEmpty():判断字符串是否为空
java
String a=" ";
System.out.println(a.isEmpty());
//输出false
3、isBlank():判断字符串是否为空或者仅包含空白字符(空格、换行)
java
String a=" ";
System.out.println(a.isBlank());
//输出true
4、charAt(int index):获取指定索引位置的字符
java
String a="12345";
System.out.println(a.charAt(1));
//输出2
2、查找与截取
1、indexof(String str):查找子串第一次出现的位置,找不到返回-1
java
String a="abc123abc123";
System.out.println(a.indexOf("123"));
System.out.println(a.indexOf("456"));
//输出
3
-1
2、contains(charSequence s):判断是否包含某个子串
java
String a="abc123abc123";
System.out.println(a.contains("123"));
System.out.println(a.contains("1234"));
//输出
true
false
3、startsWith(String prefix) / endsWith(String suffix): 判断是否以某前缀开头或后缀结尾。
java
String a="abc123abc123";
System.out.println(a.startsWith("abc"));
System.out.println(a.startsWith("bc1"));
System.out.println(a.endsWith("123"));
System.out.println(a.endsWith("abc"));
//输出
true
false
true
false
4、substring(int begin, int end): 截取子串(左闭右开区间)。
java
String a="abc123abc123";
System.out.println(a.substring(0,3));
System.out.println(a.substring(3,6));
//输出
abc
123
3、转换与处理
1、toLowerCase()/toUpperCase:转小写或大写
java
String a="aBc123abc123";
System.out.println(a.toLowerCase());
System.out.println(a.toUpperCase());
//输出
abc123abc123
ABC123ABC123
2、trim():去除首尾空格(ASCII空格)
java
String a=" aBc123abc123 ";
System.out.println(a.trim());
//输出
aBc123abc123
3、strip():去除首位空白字符(支持Unicode空白)
4、replace(char old,char new):简单的字符或字符串替换
java
String a="abc123abc123";
a.replace("a","b");
System.out.println(a);
a=a.replace("a","b");
System.out.println(a);
//输出
abc123abc123
bbc123bbc123
5、split(String regex):按分隔符拆分字符串,返回字符串数组
java
String a="123456789123456789";
String[] s_arr = a.split("5");
for (String s:s_arr){
System.out.println(s);
}
//输出
1234
67891234
6789
4、比较
1、equals(Object obj):比较字符串内容是否相等
java
String a="123";
String b="123";
String c="456";
System.out.println(a==b);
System.out.println(a.equals(b));
System.out.println(a.equals(c));
b=a;
System.out.println(a==b);
//输出
true
true
false
true
2、equalsIgnoreCase(String str): 忽略大小写比较内容
java
String a="hello world";
String b="HELLO WORLD";
System.out.println(a.equalsIgnoreCase(b));
//输出
true
5、编码与转换
1、valueOf(Object obj):将其他类型转换为字符串
java
// int 转 String
int num = 123;
String str1 = String.valueOf(num);
System.out.println(str1); // "123"
// double 转 String
double d = 123.456;
String str2 = String.valueOf(d);
System.out.println(str2); // "123.456"
// boolean 转 String
boolean b = true;
String str5 = String.valueOf(b);
System.out.println(str5); // "true"
// Object 转 String(包括 null 安全)
Object obj = new Object();
String str9 = String.valueOf(obj);
System.out.println(str9); // java.lang.Object@hashcode
// null 对象转 String(不会抛异常)
Object nullObj = null;
String str10 = String.valueOf(nullObj);
System.out.println(str10); // "null"
// Integer 对象转 String
Integer integer = 456;
String str11 = String.valueOf(integer);
System.out.println(str11); // "456"
// Double 对象转 String
Double doubleObj = 78.90;
String str12 = String.valueOf(doubleObj);
System.out.println(str12); // "78.9"
// char 数组转 String
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str13 = String.valueOf(charArray);
System.out.println(str13); // "Hello"
// char 数组部分转 String(从索引1开始,取3个字符)
String str14 = String.valueOf(charArray, 1, 3);
System.out.println(str14); // "ell"