0

0

Java中字符串类型String的基础用法_Java文本处理入门

P粉602998670

P粉602998670

发布时间:2026-03-12 13:17:03

|

814人浏览过

|

来源于php中文网

原创

string不可变,所有操作均创建新对象;底层用char[]或byte[]存储,final修饰;拼接用stringbuilder,判空用isempty(),判等用equals(),substring索引左闭右开。

java中字符串类型string的基础用法_java文本处理入门

String 是不可变的,所有“修改”都是新建对象

Java 里 String 不是字符数组的包装,它底层用 char[](Java 8)或 byte[](Java 9+)存数据,但整个类被 final 修饰,实例一旦创建就不能改内容。你以为的 str.replace("a", "b")str + "x",其实都返回一个新 String 对象,原变量没变。

常见错误现象:str.toUpperCase(); 执行后 str 还是小写——因为没赋值回去。

  • 必须显式赋值: str = str.toUpperCase();
  • 拼接大量字符串时,别用 + 循环(尤其在循环里),会频繁创建临时对象;改用 StringBuilder
  • 判断是否为空,优先用 str.isEmpty() 而不是 str.length() == 0,语义更清晰,且空指针风险更低(前提是已非 null)

判等必须用 equals(),== 只比较引用

== 比的是两个变量指向的内存地址是否相同;equals() 才真正比内容。由于字符串常量池的存在,字面量直接赋值可能“碰巧”让 == 成立,但这完全不可靠。

使用场景:用户输入校验、配置值比对、JSON 字段提取后判断等——一律用 equals()

立即学习Java免费学习笔记(深入)”;

Favird No-Code Tools
Favird No-Code Tools

无代码工具的聚合器

下载
  • 安全写法: "abc".equals(str),避免 strnull 时抛 NullPointerException
  • 忽略大小写用 equalsIgnoreCase(),不要自己先转再比
  • 如果确定两个 String 都来自 intern() 或都是编译期常量,== 才可能稳定,但不推荐依赖这种行为

substring() 的索引是左闭右开,越界就抛 StringIndexOutOfBoundsException

substring(int beginIndex, int endIndex)endIndex 不包含,这点和 Python 不同,容易多取一位或少取一位。而且它不检查 beginIndex > endIndex,只检查是否越界。

常见错误现象:str.substring(2, 5) 本想取第 2~4 位,结果取了 2、3、4(共三位),但如果 str 长度只有 4,endIndex=5 就直接崩。

  • 获取从某位置到末尾:用单参数 substring(int beginIndex),不用传 str.length()
  • 截取前 N 位:用 str.substring(0, Math.min(N, str.length())),防越界
  • Java 7u6 之后,substring() 不再共享原字符串的底层数组,内存更可控,但旧版本要注意潜在的内存泄漏(大字符串截一小段却持有着整个数组)

字符串拼接在不同场景下性能差异极大

编译期能确定的拼接(如 "a" + "b" + "c")会被 javac 优化成一个常量;运行期拼接则取决于方式:用 + 在方法内单次拼接,JVM 通常会自动转成 StringBuilder;但循环中用 += 就真会反复新建对象。

性能影响:10 万次循环拼接,用 += 可能比 StringBuilder 慢百倍以上;而 String.format() 因要解析格式串,开销明显大于直接拼接。

  • 简单拼接两个变量:用 + 完全没问题,可读性好
  • 循环内拼接:必须用 StringBuilder,初始化时建议指定容量(如 new StringBuilder(1024)),减少扩容次数
  • 需要格式化(如带占位符):用 String.format()MessageFormat,别自己拼 "id=" + id + ", name=" + name

最容易被忽略的是:日志拼接里写 log.debug("user=" + user + ", action=" + action) ——即使日志级别关了,字符串也已经拼完了。应该用占位符形式:log.debug("user={}, action={}", user, action),延迟拼接。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

335

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号