登录
首页 >  文章 >  java教程

Java字符串常用操作与方法详解

时间:2026-01-08 12:35:37 273浏览 收藏

目前golang学习网上已经有很多关于文章的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Java字符串操作与常用方法详解》,也希望能帮助到大家,如果阅读完后真的对你学习文章有帮助,欢迎动动手指,评论留言并分享~

Java中String不可变,所有修改方法均返回新对象,需显式赋值;==比较引用,equals()比较内容,判等应避免空指针;substring、split、trim等方法有特定边界行为;拼接应依场景选字面量、+或StringBuilder。

Java字符串的基本操作与常用方法

字符串不可变性导致的常见误操作

Java 中 String 是不可变对象,所有看似“修改”的方法(如 replace()substring())其实都返回新字符串,原字符串不变。很多人会写成:

str.replace("a", "b"); // 错!没赋值给变量,结果被丢弃
结果发现变量内容没变。必须显式重新赋值:
str = str.replace("a", "b");
这个特性也意味着频繁拼接字符串时用 String 效率极低——每次操作都新建对象,应改用 StringBuilder

==equals() 判等的区别和陷阱

== 比较两个 String 变量,判断的是引用是否指向同一内存地址;而 equals() 才是语义上的内容相等。常见错误包括:

  • 从数据库或网络读取的字符串用 == 判断是否等于字面量(如 "YES"),结果为 false
  • 忽略大小写需求却直接用 equals(),应改用 equalsIgnoreCase()
  • 未判空就调用 str.equals("abc"),一旦 strnull 就抛 NullPointerException
安全写法是:
"abc".equals(str) // 字面量在前,避免空指针

常用方法的参数细节与边界行为

几个高频方法的实际表现常被低估:

  • substring(int beginIndex):从指定索引到末尾,但索引超出长度会抛 StringIndexOutOfBoundsExceptionsubstring(0, 0) 返回空字符串,不报错
  • split(String regex):正则表达式入参,点号 .、星号 * 等需转义,如按点分割得写 str.split("\\.");空字符串结尾默认被丢弃,要保留得加负数限制:str.split(",", -1)
  • trim() 只去除首尾 ASCII 空格(' ''\t''\n' 等),不去除全角空格或 Unicode 分隔符;需要更广义“空白”请用 strip()(JDK 11+)

字符串拼接在不同场景下的性能选择

拼接方式选错会显著拖慢程序:

  • 编译期确定的字面量拼接(如 "a" + "b" + "c")由编译器优化为单个字符串,无开销
  • 运行时少量拼接(2~3 个变量)用 + 即可,JVM 会自动优化为 StringBuilder
  • 循环内拼接或不确定数量拼接,必须手动用 StringBuilder
    StringBuilder sb = new StringBuilder();<br>for (String s : list) {<br>    sb.append(s);<br>}<br>String result = sb.toString();
    否则每轮 + 都新建对象,时间复杂度接近 O(n²)
注意 StringBuilder 非线程安全;多线程环境才考虑 StringBuffer,但多数情况没必要。 字符串不可变性和引用语义是绝大多数问题的根源,哪怕写了多年 Java,仍可能在 split() 的正则转义或 trim() 的字符覆盖范围上栽跟头。

今天关于《Java字符串常用操作与方法详解》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>