在Java中如何使用String类处理文本_Java字符串常用方法解析
发布时间 - 2026-01-04 00:00:00 点击率:次Java String不可变,所有修改操作均返回新对象;replace()等方法不改变原字符串,需重新赋值;substring取左闭右开区间;运行时拼接用StringBuilder更高效;比较字符串内容须用equals()而非==。
Java 的 String 类不可变,所有“修改”操作实际都返回新对象——这是绝大多数字符串误用问题的根源。
为什么 replace() 没生效?
因为 String 是不可变的,replace()、toUpperCase()、trim() 等方法从不修改原字符串,而是返回新实例。
- 常见错误:
String s = " hello "; s.replace(" ", ""); s.trim(); System.out.println(s); // 输出仍是 " hello " - 正确写法:必须重新赋值
String s = " hello "; s = s.replace(" ", ""); // 注意这里赋值了 s = s.trim(); // 也必须赋值 System.out.println(s); // 输出 "hello" - 链式调用更安全:
String result = s.trim().replace(" ", "").toLowerCase();
substring() 的边界到底怎么算?
substring(int beginIndex, int endIndex) 取的是 左闭右开区间,即包含 beginIndex,但不包含 endIndex。越界会抛 StringIndexOutOfBoundsException。
-
"abc".substring(1, 2)→"b"(索引 1 是b,索引 2 是c,但不包含) -
"abc".substring(1)→"bc"(单参数版本从指定位置到末尾) - 容易踩坑:用
length()当endIndex时别加 1,s.substring(0, s.length())才是完整字符串 - 空字符串或 null 判断必须前置,否则直接调用会 NPE
拼接字符串该用 + 还是 StringBuilder?
编译期确定的字面量拼接(如 "a" + "b" + "c")会被 JVM 优化为单个常量;但运行时变量拼接(尤其循环中)用 + 会产生大量中间 String 对象,性能差。
立即学习“Java免费学习笔记(深入)”;
- 少量、非循环拼接:
str1 + str2 + "static"可读性好,没问题 - 循环内拼接(如构建日志、SQL):
StringBuilder sb = new StringBuilder(); for (String item : list) { sb.append(item).append(","); } String result = sb.toString(); // 最后才转 String - 注意:不要在循环里反复调用
sb.toString(),它每次都会新建对象 - JDK 9+ 对
+做了部分优化,但逻辑复杂时仍推荐显式用StringBuilder
equals() 和 == 到底该用哪个?
== 比较的是引用地址,equals() 比较的是字符内容。除非明确要判断是否为同一对象(极少见),否则一律用 equals()。
- 常见错误:
if (s == "hello") { ... } // 错!可能因字符串池机制偶然成功,但不可靠 - 正确写法:
if ("hello".equals(s)) { ... } // 推荐把字面量放前面,避免 s 为 null 时 NPE - 忽略大小写用
equalsIgnoreCase(),别用toLowerCase().equals()(创建多余对象) - 空安全判断可结合
Objects.equals(a, b)(JDK 7+),自动处理 null
字符串处理最易被忽略的其实是编码和 null 安全——new String(bytes, charset) 不指定编码名会依赖平台默认
,split() 遇到 null 输入直接炸,这些地方没日志很难定位。
# java
# 编码
# app
# string类
# 为什么
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
中山网站推广排名,中山信息港登录入口?
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel如何处理表单验证?(Requests代码示例)
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
简单实现jsp分页
lovemo网页版地址 lovemo官网手机登录
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
JavaScript如何实现路由_前端路由原理是什么
北京企业网站设计制作公司,北京铁路集团官方网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何快速使用云服务器搭建个人网站?
Laravel如何使用withoutEvents方法临时禁用模型事件
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Android仿QQ列表左滑删除操作
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在宝塔面板中修改默认建站目录?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何登录建站主机?访问步骤全解析
如何用搬瓦工VPS快速搭建个人网站?
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
高端云建站费用究竟需要多少预算?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
海南网站制作公司有哪些,海口网是哪家的?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在阿里云通过域名搭建网站?
如何彻底卸载建站之星软件?
如何注册花生壳免费域名并搭建个人网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何在腾讯云服务器上快速搭建个人网站?
javascript日期怎么处理_如何格式化输出
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
如何在阿里云服务器自主搭建网站?
如何续费美橙建站之星域名及服务?
下一篇:《智联招聘》修改密码方法
下一篇:《智联招聘》修改密码方法

