String常用方法

目录

一、String的常用方法

**注意点**:

[1、Java 的 String 类型是不可变的](#1、Java 的 String 类型是不可变的)

2、==与equal()

3、空指针异常:

1、基本信息与判断

1、length():获取字符串长度

2、isEmpty():判断字符串是否为空

3、isBlank():判断字符串是否为空或者仅包含空白字符(空格、换行)

[4、charAt(int index):获取指定索引位置的字符](#4、charAt(int index):获取指定索引位置的字符)

2、查找与截取

[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): 截取子串(左闭右开区间)。)

3、转换与处理

1、toLowerCase()/toUpperCase:转小写或大写

2、trim():去除首尾空格(ASCII空格)

3、strip():去除首位空白字符(支持Unicode空白)

[4、replace(char old,char new):简单的字符或字符串替换](#4、replace(char old,char new):简单的字符或字符串替换)

4、比较

[1、equals(Object obj):比较字符串内容是否相等](#1、equals(Object obj):比较字符串内容是否相等)

[2、equalsIgnoreCase(String str): 忽略大小写比较内容](#2、equalsIgnoreCase(String str): 忽略大小写比较内容)

5、编码与转换

[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"
相关推荐
像我这样帅的人丶你还16 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩16 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia16 小时前
Mybatis的日志输入
java
亦暖筑序18 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户2986985301421 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao21 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿1 天前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰6751 天前
字节跳动国际支付-后端开发-三面面经
java
Flittly1 天前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity1 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端