商城首页欢迎来到中国正版软件门户

您的位置:首页 >JAVA中String类的使用方法示例讲解

JAVA中String类的使用方法示例讲解

  发布于2026-05-05 阅读(0)

扫一扫,手机访问

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类提供的构造方法其实相当丰富,下图展示了一个更全面的视图:

JA VA中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。整个流程的示意图如下,可以帮助你更直观地理解:

JA VA中String类的使用方法示例讲解

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")。这样可以有效避免当variablenull时引发的空指针异常。

第二,务必牢记String的不可变性。任何看似修改字符串的操作,比如concatsubstring或者trim,其实都返回了一个全新的String对象,原来的对象丝毫未变。你所看到的“变化”,只不过是对象的引用指向了新的地址而已。理解这一点,对于编写高效、正确的字符串处理代码至关重要。

本文转载于:https://www.jb51.net/program/363203uyr.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注