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 日

相关推荐

  • Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?

    大家好,我是汤师爷~ 这篇聊聊 Bolt.new 和 Cursor 的对比。 Bolt.new 是一款基于 SaaS 的 AI 编码平台。它由 LLM 驱动的智能体作为底层,并结合 WebContainers 技术,让用户可以直接在浏览器中进行编码和运行。其主要优势包括: 支持前后端同时开发; 项目文件夹结构可视化; 环境自托管,自动安装依赖(如 Vite、…

    2025 年 1 月 12 日
    26900
  • 2024年主流使用的JDK版本及其核心特性介绍

    原文全文详见个人博客:https://www.coderli.com/feature-of-popular-jdk-version/2024年主流使用的JDK版本及其核心特性介绍在群里交流的时候,经常遇到不同同学使用的JDK版本五花八门,并且很多不知道其使用版本的特点。作为Java开发者,理解不同JDK版本的核心特性和优势不仅能提高我们的开发效率,还能帮助我…

    2024 年 12 月 28 日
    46400
  • 解决Spring Boot中’factoryBeanObjectType’属性类型不匹配问题的方案

    问题背景 在Spring Boot应用开发过程中,执行单元测试时可能会遇到一个棘手的类型转换异常。本文详细记录了该问题的排查过程,若您仅关注解决方案,可直接跳转至文末处理步骤。运行环境:- Spring Boot 3.2.1- JDK 17系统抛出的关键错误信息为:”Caused by: java.lang.IllegalArgumentException:…

    2025 年 5 月 12 日
    14200
  • Redis Java 集成到 Spring Boot

    Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。 Redis Java 集成到 Spring Boot 一、使用 Spring Boot 连接 Redis 单机 1.创…

    2025 年 1 月 1 日
    31300
  • 蓝桥杯竞赛备战指南:核心知识点与实战题型解析(C++/Java/Python版)

    2025蓝桥杯竞赛备战全攻略 ——核心知识点精讲与典型题型剖析 一、命题规律解读 通过研究近三届赛事真题,我们发现试题主要聚焦于 算法基础、数据结构应用、数理逻辑、文本处理、编程语言特性 五大板块,并呈现出向 动态规划、图论算法、贪心策略 等高阶知识点倾斜的趋势。 1. 算法核心模块(重点考核) 排序与检索技术 分治排序(快排/归并) 折半查找(含变形题型)…

    未分类 2025 年 5 月 11 日
    13900

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信