Java String 类详解

简介: Java 中的 `String` 类用于表示不可变的字符序列,是 Java 标准库 `java.lang` 包的一部分。字符串对象一旦创建,其内容不可更改,修改会生成新对象。

Java中的 String 类是一个非常重要的类,用于表示不可变的字符序列。它是 Java 标准库中的一部分,属于 java.lang 包。由于字符串在许多编程场景下的频繁使用,了解 String 类的特性、方法与使用方式是非常重要的。

1. 基本概述

  • 不可变性:Java 的 String 对象是不可变的。一旦创建了字符串对象,它的内容就不能被改变。如果对字符串进行修改,实际上是创建了一个新的字符串对象。
  • 创建方式:可以使用字面值创建字符串(String str = "Hello";)或通过 new 关键字创建(String str = new String("Hello");)。

2. 主要构造方法

  • String(): 创建一个空字符串对象。
  • String(String original): 用指定的字符串初始化新创建的字符串对象。
  • String(char[] value): 用字符数组初始化新创建的字符串对象。
  • String(byte[] bytes): 用字节数组初始化新创建的字符串对象。

3. 重要的方法

3.1. 字符串基本操作

  • length(): 返回字符串的长度。
  • charAt(int index): 返回指定索引处的字符。
  • substring(int beginIndex): 返回从指定索引开始到末尾的子字符串。
  • substring(int beginIndex, int endIndex): 返回从 beginIndexendIndex(不包括)之间的子字符串。

3.2. 查找与替换

  • indexOf(String str): 返回指定子字符串在此字符串中第一次出现的索引。
  • lastIndexOf(String str): 返回指定子字符串在此字符串中最后一次出现的索引。
  • replace(CharSequence target, CharSequence replacement): 替换所有出现的指定字符序列。

3.3. 大小写转换

  • toLowerCase(): 将字符串转换为小写字母。
  • toUpperCase(): 将字符串转换为大写字母。

3.4. 去空白与填充

  • trim(): 去掉字符串两端的空白符。
  • padStart(int minLength, char padChar): 在字符串开头填充指定字符,直到达到指定长度(需使用其他类)。
  • padEnd(int minLength, char padChar): 在字符串结尾填充指定字符,直到达到指定长度(需使用其他类)。

3.5. 字符串比较

  • equals(Object anObject): 比较此字符串与指定对象的内容是否相等。
  • equalsIgnoreCase(String anotherString): 比较此字符串与指定字符串(忽略大小写)是否相等。
  • compareTo(String anotherString): 按字典顺序比较两个字符串。

3.6. 分割与连接

  • split(String regex): 根据给定的正则表达式将字符串分割成字符串数组。
  • join(CharSequence delimiter, CharSequence... elements): 使用指定的分隔符连接字符串数组(Java 8+)。

3.7. 转换为其他类型

  • toString(): 返回字符串对象的字符串表示。
  • getBytes(): 将字符串转换为字节数组(使用平台的默认字符集)。

4. 示例代码

下面是一些示例代码,演示了 String 类的常用方法:

public class StringExample {
   
    public static void main(String[] args) {
   
        String str1 = "Hello, World!";
        String str2 = "Java";

        // 字符串长度
        System.out.println("Length of str1: " + str1.length());

        // 字符访问
        System.out.println("Character at index 7: " + str1.charAt(7));

        // 子字符串
        System.out.println("Substring (7, 12): " + str1.substring(7, 12));

        // 查找
        System.out.println("Index of 'World': " + str1.indexOf("World"));

        // 替换
        System.out.println("Replaced String: " + str1.replace("World", "Java"));

        // 大小写转换
        System.out.println("Lowercase: " + str1.toLowerCase());
        System.out.println("Uppercase: " + str1.toUpperCase());

        // 比较
        System.out.println("Strings are equal: " + str1.equals(str1));

        // 分割
        String[] parts = str1.split(", ");
        for (String part : parts) {
   
            System.out.println("Part: " + part);
        }
    }
}
AI 代码解读

5. 总结

Java 的 String 类是操作字符序列的基础,提供了丰富的方法来处理字符串。由于字符串在 Java 编程中的广泛使用,掌握 String 类的特性和方法对于高效编程至关重要。注意字符串的不可变性和性能开销,这在处理大量字符串时非常关键。

目录
打赏
0
6
7
2
219
分享
相关文章
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
137 0
Java并发包下Atomic相关类的使用
本文介绍了 `java.util.concurrent.atomic` 包下的各类原子类及其使用场景,包括基本类型原子类(如 `AtomicInteger`、`AtomicLong`)、数组类型原子类(如 `AtomicIntegerArray`)、引用类型原子类(如 `AtomicReference`)、对象属性修改原子类(如 `AtomicIntegerFieldUpdater`)以及原子操作增强类(如 `LongAdder` 和 `LongAccumulator`)。同时,详细对比了不同原子类在高并发场景下的性能表现,展示了 `LongAdder` 的高效性。
91 31
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
30 0
|
2月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
43 0
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
|
4月前
|
《从头开始学java,一天一个知识点》之:输入与输出:Scanner与System类
你是否也经历过这些崩溃瞬间?三天教程连`i++`和`++i`都说不清,面试时`a==b`与`equals()`区别大脑空白,代码总是莫名报NPE。这个系列就是为你打造的Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可学习。直击高频考点和实际开发中的“坑位”,拒绝冗长概念,每篇都有可运行代码示例。涵盖输入输出基础、猜数字游戏、企业编码规范、性能优化技巧、隐藏技能等。助你快速掌握Java核心知识,提升编程能力。点赞、收藏、转发,助力更多小伙伴一起成长!
74 19
重学Java基础篇—类的生命周期深度解析
本文全面解析了Java类的生命周期,涵盖加载、验证、准备、解析、初始化、使用及卸载七个关键阶段。通过分阶段执行机制详解(如加载阶段的触发条件与技术实现),结合方法调用机制、内存回收保护等使用阶段特性,以及卸载条件和特殊场景处理,帮助开发者深入理解JVM运作原理。同时,文章探讨了性能优化建议、典型异常处理及新一代JVM特性(如元空间与模块化系统)。总结中强调安全优先、延迟加载与动态扩展的设计思想,并提供开发建议与进阶方向,助力解决性能调优、内存泄漏排查及框架设计等问题。
148 5
|
4月前
|
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
112 11
|
4月前
|
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
119 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问