JAVA中String类的使用方法示例讲解
1、前言
在Ja va编程的世界里,String类是我们打交道最频繁的伙伴之一,几乎每个项目都离不开它。今天,我们就来系统地梳理一下这个核心类的使用门道。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
整个脉络可以清晰地分为三步:先从如何创建String对象讲起,然后深入探讨字符串之间如何正确比较,最后再盘点一批最实用的常用方法。跟着这个思路走下来,你就能稳稳地掌握String类的基本功了。
2、String的使用
2.1 创建String
创建String对象的方式多种多样,下面这几种是最常用的,可以应对大部分场景。
这里有个细节值得注意:如果打算通过byte数组来创建字符串,那么数组里的单个数值最好不要超过127。原因在于,这个过程依赖ASCII码表进行转换,超出范围可能会导致非预期的字符结果。
// 方式一:直接赋值
String string01 = "zjx";
// 方式二:通过构造方法传入字面量
String string02 = new String("zjx");
// 方式三:通过字符数组构建
String string03 = new String(new char[]{'z','j','x'});
// 方式四:通过字节数组构建(ASCII码转换)
String string04 = new String(new byte[]{97,98,99});
// 方式五:通过字节数组和索引构建部分内容
String string05 = new String(new byte[]{97,98,99},0,2);
// 方式六:通过字符数组和索引构建部分内容
String string06 = new String(new char[]{'z','j','x'},0,2);
上面这些只是部分例子,String类提供的构造方法其实相当丰富,下图展示了一个更全面的视图:

2.2 String之间的比较
2.2.1 比较方式
说到比较两个字符串是否相等,绝大多数情况下,都应该使用Stringequals方法。直接用“==”操作符比较的是对象引用地址,那可不是我们想要的内容对比。
2.2.2 equals详解
那么,equals方法内部到底是怎么工作的呢?它的判断逻辑其实非常严谨,可以拆解为以下几个步骤:
第一步,判断比较对象是不是自己本身。如果是,直接返回true,省去后续所有步骤。
第二步,判断传入的对象是不是String类型。如果不是,二话不说,返回false。
第三步,这里涉及到一个底层优化细节:字符串压缩功能是否被禁用。这个开关会影响后续的比较路径。
第四步,如果启用了压缩功能,那么仅当两个字符串的编码格式完全相同时,比较才会继续,否则返回false。
第五步,也是最终裁决的一步:逐位比对两个String对象底层的存储数组。这个数组就是下面这行代码所定义的:
@Stable private final byte[] value; //字符串的实际存储载体
只有当这两个byte[] value的内容完全一致时,equals方法才会返回true。整个流程的示意图如下,可以帮助你更直观地理解:

2.3 常用方法
理论讲清楚了,咱们再来看看实战。下面这些是String类中间出场率极高的一批方法,几乎每天都会用到:
// equals:区分大小写的内容比较
System.out.println("zjx 与 ZJX :" + "zjx".equals("ZJX"));
// equalsIgnoreCase:忽略大小写的内容比较
System.out.println("zjx 与 ZJX :" + "zjx".equalsIgnoreCase("ZJX"));
// length:获取字符串长度
System.out.println("zjx".length());
// indexOf:查找字符首次出现的索引(找不到则返回-1)
System.out.println("zjxzjx".indexOf("z"));
// lastIndexOf:查找字符最后一次出现的索引
System.out.println("zjxzjx".lastIndexOf("z"));
// split:按指定字符分割字符串
System.out.println("zjxzjx".split("z").length);
// substring:截取子串(从起始索引到结束索引前一位)
System.out.println("zjxzjx".substring(1,2));
// trim:去除字符串首尾的空格
System.out.println(" zjxzjx ".trim());
// charAt:获取指定索引位置的字符
System.out.println("zjx".charAt(1));
3、结束语
最后,分享两个在实践中非常有用的小技巧。
第一,像"zjx"这样的字符串字面量,本身就是一个String对象,可以直接调用所有方法。在进行equals比较时,如果其中一方是固定的字面量,强烈推荐用字面量来调用方法。例如,写成"zjx".equals(variable),而不是variable.equals("zjx")。这样可以有效避免当variable为null时引发的空指针异常。
第二,务必牢记String的不可变性。任何看似修改字符串的操作,比如concat、substring或者trim,其实都返回了一个全新的String对象,原来的对象丝毫未变。你所看到的“变化”,只不过是对象的引用指向了新的地址而已。理解这一点,对于编写高效、正确的字符串处理代码至关重要。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Python怎么实现电脑定时自动调低亮度和音量保护视力
Python如何实现电脑定时自动降低屏幕亮度与系统音量以保护视力健康 Windows 环境下使用 winsdk 与 pycaw 精准调控亮度与音量 在Windows操作系统中,若想通过Python脚本实现屏幕亮度与系统音量的自动化调节,您会发现系统并未提供官方的Python直接控制接口。因此,我们需
PHP与阿里云通义千问集成_PHP调用Qwen模型【方法】
PHP调用通义千问模型:通过DashScope API实现文本生成的完整指南 在PHP项目中集成阿里云通义千问大语言模型,开发者需要直接调用DashScope平台的REST API接口。由于目前官方未提供PHP SDK,掌握HTTP请求的构建方法至关重要。本文将详细讲解如何使用PHP的cURL或fi
如何在 Airflow 中固定执行日期并统一设为当日零点时间戳
Airflow 中如何将 execution_date 转换为当日零点时间戳:时区安全的最佳实践 本文详细讲解在 Apache Airflow 中,如何将默认 UTC 时区的 execution_date 准确转换为指定业务时区(例如 Europe Amsterdam)当日零点时间戳的标准化方案。通
Python怎么将多个列表转为字典_利用zip函数构建映射关系
Python怎么将多个列表转为字典_利用zip函数构建映射关系 zip函数怎么把两个列表变成字典 这事儿其实很简单,核心就一行代码:dict(zip(keys, values))。当然,前提是两个列表长度得一致,而且keys里的元素必须是可哈希的,比如字符串、数字或者元组。这可以说是最经典、也最稳妥
Firestore Gen2 函数中 Firestore 触发器的正确部署方式
Firestore Gen2 函数中 Firestore 触发器的正确部署方式 许多开发者在部署 Firestore Gen2 触发函数时,直接使用 gcloud 命令会遇到签名不匹配错误(例如“takes 1 positional argument but 2 were given”)。其根本原因
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

