在Java中String类有哪些常用方法_Java字符串操作解析-java教程

判断字符串是否为空或仅含空白字符:Java 11+ 用 isBlank(),Java 8 及以前需 null 检查后 trim().isEmpty();substring() 在 Java 7u6 后改为复制数组防内存泄漏,Java 9 起优化为 O(1);split() 默认丢弃末尾空串,可用负 limit 保留;拼接优先用 String.join() 或 StringBuilder,避免循环中用 +。

如何判断字符串是否为空或只包含空白字符

用 isEmpty() 判断长度是否为 0,但要注意它不处理空格;真正安全的写法是先用 isBlank()(Java 11+)——它会把 "\t\n " 这类也算作“空白”。Java 8 及以前得手动写 str == null || str.trim().isEmpty(),但要注意 trim() 对 null 会抛 NullPointerException,所以必须先判空。

  • isEmpty():仅检查 length == 0,速度快,但对 " " 返回 false
  • isBlank():Java 11 引入,内部调用 chars().allMatch(Character::isWhitespace),兼容 Unicode 空白符(如  、 )
  • 老版本替代方案务必写成 str != null && str.trim().isEmpty(),顺序不能反

为什么 substring() 在 Java 7u6 之后性能变差又变好

Java 7u6 前,substring() 复用原字符串的 char[] 数组,内存不释放(大字符串截一小段,原数组仍被引用);7u6 到 Java 8 中改成了「复制新数组」,解决内存泄漏但带来额外开销;Java 9 起改用 byte[] + 编码标记,substring() 再次变成 O(1) 时间且无共享数组风险。

  • Java 8 下大量调用 substring() 可能引发 GC 压力,尤其从长日志中反复提取字段时
  • 如果确定子串生命周期短于原串,可考虑用 String.valueOf(charArray, offset, count) 避免构造中间 String
  • 注意 substring(beginIndex, endIndex) 的 endIndex 是「不包含」的,越界直接抛 StringIndexOutOfBoundsException

split() 的坑:为什么 "a..b".split("\\.") 返回长度为 3 的数组

split() 默认丢弃末尾空字符串,但遇到连续分隔符时,中间的空串会被保留。上面例子中正则 "\." 匹配点号,"a..b" 拆成 ["a", "", "b"] —— 因为两个点号之间有长度为 0 的子串。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java中String类有哪些常用方法_Java字符串操作解析-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4029730+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4029730+
  • 本周更新: 0+
  • 最后更新: 2026-03-16