Java之String类常用操作

![在这里插入图片描述](https://pic.it1024doc.com/csdn/202412/451d6264b111e3d7712779fbb678408d.gif)

* * *

#### Java中的String类探索

* [一、深入理解String类](#一深入理解String类)
  * [1、类的声明与特性](#1类的声明与特性)
  * [2、内部属性的探讨](#2内部属性的探讨)
  * [3、字符串常量的存储机制](#3字符串常量的存储机制)
  * [4、不可变性的深远影响](#4不可变性的深远影响)
  * [5、实例化String的途径](#5实例化String的途径)
  * [6、字符串拼接的艺术](#6字符串拼接的艺术)
* [二、String的构造器详解](#二String的构造器详解)
  * [1、构造器的多样性](#1构造器的多样性)
  * [2、String与char数组的转换](#2String与char数组的转换)
  * [3、String与byte数组的转换](#3String与byte数组的转换)
* [三、String的常用方法概览](#三String的常用方法概览)

## 一、深入理解String类

### 1、类的声明与特性

```java
public final class String
    implements java.io.Serializable, Comparable, CharSequence {

final 关键字表明String类是封闭的,不允许被继承;
实现了 Serializable 接口,使得String对象可以在网络上传输或存储;
实现了 Comparable 接口,允许String对象进行大小比较。

2、内部属性的探讨

private final char value[];

这是存储字符串数据的核心容器。

final 关键字确保一旦value数组被初始化,其引用地址将不可更改。

3、字符串常量的存储机制

字符串常量被统一存储在字符串常量池(StringTable)中,该池不允许存放重复的字符串常量。不同JDK版本中,字符串常量池的存放位置有所差异。

4、不可变性的深远影响

  • 重新赋值字符串变量时,需要指定一个新的字符串常量位置,不能在原位置进行修改。
  • 进行字符串拼接时,需要开辟新的空间来保存结果。
  • 使用replace方法替换字符时,也需要新的空间来保存修改后的字符串。
public class StringDemo {

    public static void main(String[] args) {
        StringDemo s = new StringDemo();
        s.test2();
        s.test3();
    }

    public void test2() {
        String s1 = "hello";
        String s2 = "hello";

        s2 = "hi";
        s2 += "world";
        System.out.println(s1);  // 输出: hello
        System.out.println(s2);  // 输出: hiworld
    }

    public void test3() {
        String s1 = "hello";
        String s2 = "hello";

        String s3 = s2.replace('l', 'o');
        System.out.println(s1);   // 输出: hello
        System.out.println(s2);   // 输出: hello
        System.out.println(s3);   // 输出: heooo
    }
}

5、实例化String的途径

可以通过直接赋值或使用new关键字来实例化String对象。

public class StringDemo1 {
    public static void main(String[] args) {
        StringDemo1 s = new StringDemo1();
        s.test1();
    }

    public void test1(){

        String s1 = "hello";
        String s2 = "hello";

        String s3 = new String("hello");
        String s4 = new String("hello");

        System.out.println(s1 == s2);  // 输出: true
        System.out.println(s1 == s3);  // 输出: false
        System.out.println(s1 == s4);  // 输出: false
        System.out.println(s3 == s4);  // 输出: false

        System.out.println(s1.equals(s2));  // 输出: true
        System.out.println(s1.equals(s3));  // 输出: true
        System.out.println(s1.equals(s4));  // 输出: true
        System.out.println(s3.equals(s2));  // 输出: true
    }
}

6、字符串拼接的艺术

- 常量与常量的拼接结果存储在字符串常量池中。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4605.html

(0)
LomuLomu
上一篇 2024 年 12 月 28 日
下一篇 2024 年 12 月 28 日

相关推荐

  • 使用 gt-checksum 迁移表结构到 GreatSQL

    将数据库表结构迁移至 GreatSQL 的指南 引言 本文旨在指导如何利用 gt-checksum 工具,将数据库表结构从 ORACLE 迁移至 GreatSQL。 gt-checksum 简介 gt-checksum 是 GreatSQL 社区开发的开源静态数据库校验和修复工具,它支持包括 MySQL 和 Oracle 在内的多种主流数据库系统。其商业版本…

    未分类 2024 年 12 月 24 日
    66200
  • Java 技术新纪元 —— 基于 Java 的联邦学习技术推动跨行业数据协同创新(238)

    🌟亲爱的技术爱好者们,诚挚欢迎访问【青云交的技术天地】!在这个数字化浪潮席卷全球的时代,我们相聚于此共同探索前沿科技。这里不仅是知识分享的平台,更是思想碰撞的舞台,期待与您携手共创技术新篇章!🌟全网平台(微信公众号/CSDN/抖音/华为/支付宝/微博):青云交一、加入【技术精英社群】快速加入通道1:【青云交技术精英圈】快速加入通道2:【CSDN 技术创作交流…

    2025 年 5 月 12 日
    29400
  • 一文带你了解什么是servlet

    介绍 Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。 servlet说实在点就是个接口,浏览器发送请求给Tomcat(服务器),若是这个请求正好对应了servle…

    2025 年 1 月 16 日
    73600
  • 成长之路:从编程小白到技术探索者

    掌握计算机思维并非一日之功,而是需要持续积累的过程。每个人的思维方式都独具特色,毕竟我们不是设定好程序的机器。常言道要换位思考,因为身处其中往往看不清全貌。曾在一本名为《代码大全》的书中读到关于结对编程的建议,这让我意识到:许多任务单靠个人难以完成。即便拥有双重智慧,也只能影响自己。无论是家庭还是企业,其发展轨迹都难以被个人掌控——有人能延缓这个过程,但无法…

    未分类 2025 年 5 月 14 日
    32500
  • Java-学生管理系统[初阶]

    让我们来探索如何使用Java语言构建一个基础的“学生信息管理系统”。这个系统将允许我们管理学生的基本信息,包括添加、删除、修改和查询学生数据。接下来,我们将分步骤实现这个系统,并在后续的文章中探讨如何为其添加模拟登录功能。 基础版学生管理系统 在深入代码之前,我们需要掌握以下Java编程基础: Java的输入输出操作 Java的分支与循环结构 Java数组的…

    未分类 2024 年 12 月 27 日
    49100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信