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"
相关推荐
一直不明飞行1 小时前
Java的equals(),hashCode()应该在什么时候重写
java·开发语言·jvm
REDcker1 小时前
有限状态机与状态模式详解 FSM建模Java状态模式与C++表驱动模板实践
java·c++·状态模式
你的保护色2 小时前
【无标题】
java·服务器·网络
basketball6162 小时前
C++ 构造函数完全指南:从入门到进阶
java·开发语言·c++
淘矿人2 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
小江的记录本3 小时前
【Java基础】泛型:泛型擦除、通配符、上下界限定(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·mysql·spring·面试·职场和发展
来恩10033 小时前
请求转发与响应重定向的使用
java
@杰克成3 小时前
Java学习30
java·开发语言·学习
次元工程师!3 小时前
LangFlow开发(三)—Bundles组件架构设计(3W+字详细讲解)
java·前端·python·低代码·langflow
oddsand15 小时前
Redis网络模型
java·数据库·redis