您的位置:首页 >JAVA中String类的使用方法示例讲解
发布于2026-05-05 阅读(0)
扫一扫,手机访问
在Ja va编程的世界里,String类是我们打交道最频繁的伙伴之一,几乎每个项目都离不开它。今天,我们就来系统地梳理一下这个核心类的使用门道。
整个脉络可以清晰地分为三步:先从如何创建String对象讲起,然后深入探讨字符串之间如何正确比较,最后再盘点一批最实用的常用方法。跟着这个思路走下来,你就能稳稳地掌握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类提供的构造方法其实相当丰富,下图展示了一个更全面的视图:

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

理论讲清楚了,咱们再来看看实战。下面这些是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));
最后,分享两个在实践中非常有用的小技巧。
第一,像"zjx"这样的字符串字面量,本身就是一个String对象,可以直接调用所有方法。在进行equals比较时,如果其中一方是固定的字面量,强烈推荐用字面量来调用方法。例如,写成"zjx".equals(variable),而不是variable.equals("zjx")。这样可以有效避免当variable为null时引发的空指针异常。
第二,务必牢记String的不可变性。任何看似修改字符串的操作,比如concat、substring或者trim,其实都返回了一个全新的String对象,原来的对象丝毫未变。你所看到的“变化”,只不过是对象的引用指向了新的地址而已。理解这一点,对于编写高效、正确的字符串处理代码至关重要。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8