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 类的特性和方法对于高效编程至关重要。注意字符串的不可变性和性能开销,这在处理大量字符串时非常关键。

相关文章
|
11天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
17天前
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
28天前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
41 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
11天前
|
存储 Java
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
|
26天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
44 8
|
26天前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
54 7
|
24天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
38 2
|
27天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
60 1
|
1月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
63 17
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
下一篇
DataWorks