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);
        }
    }
}

5. 总结

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

相关文章
|
3天前
|
Java
颠覆认知:一向主张可扩展性的Java,为何要推出封闭类?
本文介绍了Java的Sealed Classes(封闭类)功能,探讨了为何Java在强调可扩展性的同时引入这一特性。文章基于JDK 17.0.5,详细解释了Sealed Classes的概念及其作用。通过对比final类和package-private类,阐述了封闭类在提高安全性和控制扩展性方面的优势。最后,通过具体示例展示了如何使用sealed关键字以及相关语法。了解这一新特性有助于我们更好地把握Java未来的发展趋势。
18 2
|
19天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
29 0
java基础(13)String类
|
7天前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
|
16天前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
1天前
|
IDE Java 开发工具
Java“未封闭的 String 表达式”怎么解决
要解决Java中的“未封闭的 String 表示”问题,需检查并修正字符串字面量,确保每个字符串被正确地用双引号括起来。若字符串跨越多行,可使用字符串连接操作符(+)或引入文本块(JDK 13 及以上版本)。这能帮助避免语法错误,并使代码更整洁易读。
|
12天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
29 14
|
5天前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
26 4
|
5天前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
33 2
|
16天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
19天前
|
Java
java的class类
java的class类
24 5