String 常用方法总揽(按功能分类)

String类常见功能 String类常用的功能 立即下载

作为一名 Java 后端开发程序员,String 是你每天都会频繁使用的类,掌握其常用方法不仅能提升代码质量,还能避免性能陷阱(如频繁拼接导致的内存浪费)。下面我将为你系统性地整理 String 的常用方法,按功能分类,并附上真实开发场景中的示例与详细中文注释,帮助你理解其作用与最佳实践。


✅ String 常用方法总揽(按功能分类)

分类方法作用简述
基本属性length()返回字符串的字符个数
isEmpty()判断字符串是否为空(长度为0)
isBlank()判断字符串是否为空白(空或仅含空格、制表符等)
字符访问charAt(int index)获取指定索引处的字符
codePointAt(int index)获取指定索引处的 Unicode 码点(支持 Unicode 扩展字符)
子串操作substring(int beginIndex)截取从指定位置到末尾的子串
substring(int beginIndex, int endIndex)截取指定范围的子串(左闭右开)
startsWith(String prefix)判断是否以指定前缀开头
endsWith(String suffix)判断是否以指定后缀结尾
contains(CharSequence cs)判断是否包含指定字符序列
查找与索引indexOf(String str)返回首次出现的索引,未找到返回 -1
indexOf(String str, int fromIndex)从指定位置开始查找首次出现的索引
lastIndexOf(String str)返回最后一次出现的索引
indexOfAny(CharSequence... searchChars)(Apache Commons Lang) 查找任意一个字符首次出现的位置
大小写转换toLowerCase()转为小写(使用默认本地化规则)
toLowerCase(Locale locale)指定区域设置转小写(推荐国际化场景)
toUpperCase()转为大写
toUpperCase(Locale locale)指定区域设置转大写
去除空白trim()去除首尾 ASCII 空格(' ')
strip()去除首尾所有 Unicode 空白字符(JDK 11+,推荐)
stripLeading() / stripTrailing()分别去除首部或尾部空白(JDK 11+)
字符串替换replace(CharSequence target, CharSequence replacement)替换所有匹配的子串
replaceAll(String regex, String replacement)使用正则表达式替换
replaceFirst(String regex, String replacement)仅替换第一个匹配项
分割与连接split(String regex)按正则表达式拆分为字符串数组
split(String regex, int limit)按正则拆分,限制返回数组长度
join(CharSequence delimiter, CharSequence... elements)将多个字符串用分隔符连接
String.join(delimiter, iterable)连接集合中的元素(推荐用于 List)
格式化与比较equals(Object obj)严格相等比较(区分大小写)
equalsIgnoreCase(String anotherString)忽略大小写比较
compareTo(String anotherString)字典序比较,返回整数差值
compareToIgnoreCase(String str)忽略大小写的字典序比较
format(String format, Object... args)格式化字符串(类似 printf)
valueOf(primitive)将基本类型转为 String(如 valueOf(123))
其他实用方法concat(String str)拼接字符串(不推荐,性能差)
repeat(int count)重复字符串(JDK 11+)
transform(Function<String, R> f)转换字符串为其他类型(JDK 15+)
lines()将字符串按行分割为 Stream(JDK 11+)

💡 重要提示:

  • String 是不可变对象(immutable),所有修改方法都会返回新对象,原字符串不变。
  • 频繁拼接字符串应使用 StringBuilder 或 StringJoiner,避免性能问题。
  • trim() 只能去掉 ASCII 空格(\u0020),而 strip() 支持 Unicode 全角空格、零宽空格等,推荐在 JDK 11+ 中使用 strip()。

✅ 实际开发场景示例(带详细中文注释)

示例 1:用户输入清洗与校验(Web 请求参数处理)

import java.util.Arrays;
import java.util.List;

public class StringCleanExample {

    public static void main(String[] args) {
        // 模拟从 HTTP 请求中获取的用户输入(可能包含多余空格、换行、制表符)
        String userInput = "  \u00A0  张三\t  \n  ";

        // ✅ 推荐:使用 strip() 清洗 Unicode 空白字符(JDK 11+)
        String cleanedName = userInput.strip();
        System.out.println("原始长度: " + userInput.length()); // 输出:14
        System.out.println("清洗后长度: " + cleanedName.length()); // 输出:3
        System.out.println("清洗后内容: '" + cleanedName + "'"); // 输出:'张三'

        // ✅ 判断是否为空或仅含空白(推荐写法)
        if (cleanedName.isBlank()) {
            System.out.println("用户姓名为空或仅含空白字符,需提示输入!");
        } else {
            System.out.println("用户姓名有效:" + cleanedName);
        }

        // ✅ 检查是否以特定前缀开头(如手机号校验)
        String phone = "  138-0013-8000  ";
        if (phone.strip().startsWith("138")) {
            System.out.println("该手机号属于中国移动");
        }

        // ✅ 按分隔符拆分多个标签(如用户兴趣标签)
        String tagsStr = "编程,Java,后端,   Spring,  ,数据库,  ";
        List<String> tags = Arrays.stream(tagsStr.split(","))
                                  .map(String::strip) // 清洗每个元素
                                  .filter(tag -> !tag.isEmpty()) // 过滤空字符串
                                  .toList(); // JDK 16+ 支持,否则用 collect(Collectors.toList())
        System.out.println("有效标签列表:" + tags);
        // 输出:[编程, Java, 后端, Spring, 数据库]
    }
}

📌 应用场景:用户注册、表单提交、API 参数校验、日志解析等场景中,前端传来的字符串往往包含不可控空白,必须清洗。


示例 2:字符串替换与格式化(日志/模板生成)

public class StringFormatAndReplaceExample {

    public static void main(String[] args) {
        // ✅ 使用 format 格式化日志消息(替代拼接,更清晰)
        String userId = "U1001";
        String action = "登录";
        String logMessage = String.format("[%s] 用户 %s 执行了 %s 操作", 
                                         java.time.LocalDateTime.now(), 
                                         userId, 
                                         action);
        System.out.println(logMessage);
        // 输出:[2025-10-12T10:30:00] 用户 U1001 执行了 登录 操作

        // ✅ 替换模板中的占位符(如邮件模板、SQL 日志)
        String template = "尊敬的{username},您于{time}成功登录系统。";
        String finalMsg = template
            .replace("{username}", "李四")
            .replace("{time}", "2025-10-12 10:30:00");
        System.out.println(finalMsg);
        // 输出:尊敬的李四,您于2025-10-12 10:30:00成功登录系统。

        // ✅ 使用正则替换敏感信息(如脱敏手机号)
        String phone = "13800138000";
        String maskedPhone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        System.out.println("脱敏后手机号:" + maskedPhone); // 输出:138****8000

        // ✅ 替换 URL 中的参数(如开发环境替换为生产环境)
        String apiUrl = "http://dev-api.example.com/v1/user/123";
        String prodUrl = apiUrl.replace("dev-api", "prod-api");
        System.out.println("生产环境地址:" + prodUrl);
        // 输出:http://prod-api.example.com/v1/user/123
    }
}

📌 应用场景:日志记录、邮件模板、API 路径动态替换、数据脱敏(GDPR/个人信息保护)、配置文件模板渲染。


示例 3:字符串比较与排序(业务逻辑判断)

import java.util.*;

public class StringComparisonExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("zhang", "Zhang", "Li", "li", "wang", "Wang");

        // ✅ 严格比较:区分大小写(用于精确匹配)
        boolean exactMatch = "Zhang".equals("zhang");
        System.out.println("严格相等:" + exactMatch); // false

        // ✅ 忽略大小写比较(用于用户名登录、配置项匹配)
        boolean caseInsensitiveMatch = "Zhang".equalsIgnoreCase("zhang");
        System.out.println("忽略大小写相等:" + caseInsensitiveMatch); // true

        // ✅ 按字典序排序(自然顺序)
        List<String> sortedNames = names.stream()
                                        .sorted() // 默认按 Unicode 排序
                                        .toList();
        System.out.println("自然排序:" + sortedNames);
        // 输出:[Li, Wang, Zhang, li, wang, zhang]

        // ✅ 忽略大小写排序(推荐用于用户列表展示)
        List<String> caseInsensitiveSorted = names.stream()
                                                  .sorted(String.CASE_INSENSITIVE_ORDER)
                                                  .toList();
        System.out.println("忽略大小写排序:" + caseInsensitiveSorted);
        // 输出:[Li, li, Wang, wang, Zhang, zhang]

        // ✅ 比较两个字符串的字典序差异(用于排序自定义逻辑)
        int cmp = "apple".compareTo("application");
        System.out.println("'apple' 与 'application' 比较结果:" + cmp); // 负数,表示 apple < application
    }
}

📌 应用场景:用户登录名匹配、配置项比对、字典排序展示、权限组名称校验。


示例 4:字符串连接与拆分(处理 CSV / 日志行)

import java.util.Arrays;
import java.util.List;

public class StringSplitJoinExample {

    public static void main(String[] args) {
        // ✅ 拆分 CSV 数据(注意:实际生产中建议使用 Apache Commons CSV 或 Jackson)
        String csvLine = "张三,25,工程师,北京";
        String[] fields = csvLine.split(",");
        System.out.println("姓名:" + fields[0] + ",年龄:" + fields[1]);

        // ✅ 使用 limit 控制拆分数量(防止过多字段导致数组过大)
        String logLine = "ERROR 2025-10-12 10:30:00 [UserService] 用户登录失败:密码错误";
        String[] logParts = logLine.split(" ", 4); // 只拆前3个空格,保留后面为完整消息
        System.out.println("日志级别:" + logParts[0]);
        System.out.println("完整消息:" + logParts[3]); // 包含完整错误信息

        // ✅ 使用 String.join() 连接集合(推荐写法)
        List<String> roles = Arrays.asList("ROLE_ADMIN", "ROLE_USER", "ROLE_AUDIT");
        String roleString = String.join(",", roles);
        System.out.println("用户角色:" + roleString);
        // 输出:ROLE_ADMIN,ROLE_USER,ROLE_AUDIT

        // ✅ JDK 11+:按行分割为 Stream(处理多行配置)
        String multiLineConfig = "host=localhost\nport=8080\nssl=true";
        multiLineConfig.lines()
                      .filter(line -> !line.trim().isEmpty())
                      .map(line -> line.split("=", 2))
                      .forEach(parts -> System.out.println(parts[0] + " -> " + parts[1]));
        // 输出:
        // host -> localhost
        // port -> 8080
        // ssl -> true
    }
}

📌 应用场景:解析配置文件、处理日志文件、导入导出 CSV、构建 SQL IN 条件。


✅ 最佳实践总结(建议收藏)

场景推荐方法禁用方法原因
清洗用户输入strip()trim()strip() 支持 Unicode 空白,更安全
字符串拼接(循环中)StringBuilder+ 或 concat()String 不可变,每次拼接创建新对象,性能差
比较字符串相等equals()==== 比较引用,不是内容
忽略大小写比较equalsIgnoreCase()toLowerCase().equals()更高效,避免创建临时对象
替换敏感信息replaceAll(regex, "***")手动索引替换正则更灵活,不易出错
连接多个字符串String.join(delimiter, list)手动拼接代码简洁,性能好
格式化输出String.format()+ 拼接可读性强,支持国际化占位符

✅ 下一步学习建议

  1. 掌握 StringBuilder 与 StringJoiner:避免在循环中使用 + 拼接。
  2. 了解正则表达式基础:replaceAll、split 等方法依赖正则,推荐学习 Pattern 和 Matcher。
  3. 学习 java.util.regex.Pattern:用于复杂文本匹配与提取(如提取邮箱、URL)。
  4. 使用工具库:如 Apache Commons Lang 的 StringUtils,提供 isEmpty, isBlank, join, substringBetween 等更健壮的方法。

JAVA中STRING的常用方法小结 介绍了JAVA中STRING的常用方法,有需要的朋友可以参考一下 立即下载

相关推荐

稳健自适应波束形成学习(2):自适应计算对角加载量方法——基于广义线性组合的鲁棒Capon波束形成

对于快拍数相对阵元数较小时,样本协方差矩阵不能很好对协方差矩阵进行估计。常规的对角加载量需要根据经验值或不断手动调整进行测试,没有一个明确的准则和推导。该篇介绍一种自适应计算对角加载量的方法,且能适应快拍数相对阵元数较小时的情况。均匀线阵阵元数:18;载波频率30MHz;通信信号来波方向0°、来波估计偏差0.5°;干扰来波方向30°;通信信号信噪比10dB;干扰信号信噪比60dB。也即在干扰角度生成66dB的零陷,通信信号受到16dB的衰减。

a1uajug的博客 824

string类的常用方法有哪些以及用法

String类: String类在java.lang中,String声明的是不可变的对象,每次操作都是生成新的String对象,然后指针指向新的String对象,原先的对象依旧在内存中,但是不在指向它,那么这个对象就会成为垃圾内存,在某一时刻由java虚拟机回收。 String常用方法: 1、indexOf(“字符”):查询指定的字符串是否存在,返回的是字符串的位置,不存在返回-1; 2、Cha...

weixin_46437623的博客 1万+

NAT反向代理技术的实现(外网访问内网)

NAT反向代理技术的实现(外网访问内网)(版权所有,引用 请联系作者,注明出处) NAT技术是网络中的重要应用之一。当有一个场景:内网搭建了服务器,需要外网访问时,可以借助NAT映射来实现。如:单位建立了一个Web服务器,我们希望在员工回家之后,依然可以访问到它,那怎么实现呢? 下面的拓扑图,就用来示范这个应用反面场景的实现过程。 一、题目要求: 地址配置如图。使用静态路由: 1、配置右侧交换机2950T,实现单臂路由; 2、配置路由使网络连通; 3、配置NAT访问,实现外网对风网服务器的

joyousmime的博客 8487

String类的20种常见方法及作用

String类的20种常见方法及作用 String类的20种常见方法 和长度有关的方法   返回类型 方法名 作用 int length() 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符)。 和数组有关的方法   返回类型 方法名 作用 byte[] getBytes() 将一个字符串转换成字节数组 char[] toCharArray() 将一个字符串转换成字符数组 String[] split(String) 将一个字符串按照指定内容劈开。 和判断有关的方法

qq_39166324的博客 4822

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出。而且还不需要license限制。

Alex_886的博客 1971

AI自主网络攻击技术深度解析:从LLM驱动到防御体系升级

网络安全领域正经历从自动化脚本到智能自主攻击的范式转变。其核心原理在于将大型语言模型(LLM)与自动化渗透测试框架深度融合,构建具备环境感知、决策规划和自适应能力的攻击系统。这种技术的核心价值在于实现了从预设步骤到目标驱动的质变,能自主完成信息收集、漏洞利用、横向移动等复杂攻击链。在应用场景上,它不仅能极大提升高级持续性威胁(APT)的攻击效率,也对渗透测试和红队演练技术提出了新的要求。面对此类由AI驱动的自主攻击,传统的基于签名的防御体系已显不足,必须转向以行为分析和零信任为核心的整体纵深防御。本次曝光的

weixin_34254464的博客 604

String类的常用功能

方法3:String(char[] value, int index, int count):把字符串数组中的一部分数据封装成字符串对象。String对象初始化功能,String类的判断功能,String类的获取功能,String类的转换功能,String类的去除空格和分割功能。2.String[] split(String str):按照指定符号(str)分割字符串,分割为字符串数组的形式。1.boolean equals(String str):比较字符串的内容是否相同(区分大小写)

蒾酒的博客 2784

【云迁移工具RDA】迁移常见问题

Agent无法正常启动,Linux系统提示“SMS.0201 Failed to start sms agent!”,Windows系统提示“SMS.0201 源端主机网络繁忙,无法连接api网关”。该问题通常是由于源端没有通公网,或者没有按照要求配置hosts,无法与iam或者sms通信导致。需要排查源端网络。1.登录源端服务器。2.检查源端是否能正常访问互联网,若无法访问,请处理后重新启动Agent。可参考弹性公网IP Ping不通检查源端的DNS,防火墙,安全组、本地网络等。

2404_89358774的博客 1485

String类的学习笔记(上):介绍String类及其常用方法的使用

本文介绍了Java中用来描述操作字符串的String类,和其一些常用的基本操作方法,字符串的创建输出,字符串对象的比较,字符串查找,字符串的转化,字符串的替换,字符串拆分,字符串截取,和大小写转换,去除左右空格,子字符串包含,学会使用这些方法,能更方便的使用操作字符串~

记录并分享学习编程时的知识点... 4036

【3D计算机视觉】从PointNet到PointNet++理论及pytorch代码

从PointNet到PointNet++理论及代码详解1. 点云是什么1.1 三维数据的表现形式1.2 为什么使用点云1.3 点云上以往的相关工作2. PointNet2.1 基于点云的置换不变性2.1.1 由对称函数到PointNet(vanilla)2.1.2 理论证明2.2 基于点云的旋转不变性2.3 网络总体结构2.4 实验结果和网络的鲁棒性2.5 代码解析3. PointNet++3.1...

小执着的博客 8万+

最新Python爬虫实战(入门爬虫篇)——案例8:图书网畅销榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对图书网畅销榜多页数据的批量爬取与 Excel 保存。代码采用模块化设计,包含分页参数构造、API 接口请求、JSON 数据解析、Excel 数据持久化等完整流程;通过配置模拟浏览器的请求头,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循 “分页遍历 → 接口请求 → JSON 解析 → 提取图书信息 → 保存到 Excel” 的标准流程,与电商类接口爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 29万+

String类的常见用法

Java基础——String类的基本内容以及各种方法的使用,非常重要!!!

explorer363的博客 5116

系统分析师论文范文(三)微服务

摘要(300字) 2024年4月,我作为系统分析师参与某省三甲医院云影像系统建设项目,负责系统分析与设计工作。该项目旨在响应国家"无胶片化"医疗政策,解决传统影像系统数据孤岛、调阅效率低等问题。系统基于DICOM 3.0和HL7国际标准,采用B/S架构与Spring Cloud Alibaba微服务技术栈,包含影像采集、智能分析、数据安全等核心模块,实现全院影像资源的云端统一管理与多端调阅。在架构设计上,通过微服务拆分、分布式事务控制及多层次安全防护机制,保障了系统的高可用性与数据一致性。系统于2024年1

echo的博客 219

Java中String类的常用方法

总结了String类的常用方法

m0_53067943的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java中String的常用方法

java中String的常用方法

HRSR1314的博客 2791

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

日常开发中,String类中常用的方法

1.基本操作方法 2.字符串比较 3.字符串与其他数据类型之间的转换 4.字符与字符串的查找 5.字符串的截取与拆分 6.字符串的替换与修改

orcl的博客 7万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

String类的常用方法

1.String的构造方法 1)String(String original):把字符串数据封装成字符串对象 2)String(char[] value):把字符数组的数据封装成字符串对象 3)String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象2.String类的获取功能: 1)length():获取字符串的长度,其实也就是字符个数 ———————————————— 2)charAt(int index):获取指定索引处的字符 3

weixin_57614141的博客 3万+

String类中常用的方法

1.String的构造方法 1)String(String original):把字符串数据封装成字符串对象 2)String(char[] value):把字符数组的数据封装成字符串对象 3)String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象 2.String类的获取功能: 1)length():获取字符串的长度,其实也就是字符个数 String str = "adsfaxsdfas沙发上案发地方"; System.out.pri

qq_37354752的博客 4106

JAVA基础之String类常用方法按功能分类讲解

一.String类(后续再补上StringBuffer类的讲解) 1.构造函数(仅列出常用构造函数) 1)public String(); 2)public String(byte[] bytes);将字节数组转换为字符串。 3)public String(byte[] bytes, int index, int length);将字节数组的一部分转换为字符串。 4)public Stri...

XiaXiaoliang的博客 1319

java中String类的常用功能以及方法

java中String类的常用功能以及方法一. 构造方法:1. String(String original);2. String(char[] value);3. String(char[] value, int index, int count);二. String类的判断功能:1. boolean equals(Object obj);2. boolean equalsIgnoreCase(...

来日浅谈的博客 2307

String类中的常用方法

一、String类中的常用方法 1、和长度有关的方法 返回类型 方法名 作用 int length() 得到一个字符串的字符个数 (一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符) 2、和数组有关的方法 返回类型 方法名 作用 byte[] getBytes() 将一个字符串转换成字节数组 char[] toCha...

weixin_44193298的博客 6554

JavaScript 中Object、Array 和 String的常用方法

JavaScript 中 Object、Array、String 常用方法总结: 📊 方法对照表 类型 核心方法 典型应用场景 Object keys()/values()/entries() 对象遍历与转换 assign()/freeze() 对象拷贝与不可变处理 动态属性 obj[key] 动态键名操作 Array map()/filter()/reduce() 数据转换与聚合 find()/includes() 元素搜索 splice()/toSpliced() 安全增删元素 String slic

警警的博客 1074

【JAVA】String类的常用方法

Java 中 String 类的常用方法一、String 类的概念二、常用的构造方法三、常用方法2、length()10、trim()11、toUpperCase() 和 toLowerCase()15、indexOf(...) 和 lastIndexOf(...)

hhj25802580的博客 1209
上一篇: Java 原生异步编程 CompletableFuture 的介绍和使用
下一篇: JDK 常用工具类系统分类与实战示例
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值