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"
相关推荐
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
嵌入式×边缘AI:打怪升级日志2 小时前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维
FreeGo~3 小时前
Linux 系统编程 进程篇 (五)
java·linux·服务器
XiYang-DING3 小时前
【Java EE】定时器
java·python·java-ee
Fuly10243 小时前
java面试知识点复习
java·开发语言·面试
信徒_3 小时前
API 网关技术选型
java
simple-L63 小时前
Java开发痛点技术文章大纲
java·开发语言
千寻girling4 小时前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
小手cool4 小时前
Java字符串按空行分割,包括末尾的空行
java