[JAVASE] String类 StringBuffer类 StringBuilder类

2024-05-29 13:52

本文主要是介绍[JAVASE] String类 StringBuffer类 StringBuilder类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.String类

        1.1 String字符串不可变的原因

        1.2 字符串中的比较方法         

                1.2.1 equals

                1.2.2 compareTo 与 compareToIgnoreCase

        1.3 字符串中的查找方法

                1.3.1 charAt 

          1.3.2 indexOf 与 lastIndexOf

        1.4 字符串中的转换方法

                1.4.1 valueOf

                1.4.2 toUpperCase 与 toLowerCase

        1.5 字符串的格式化 

        1.6 字符串的替换        

                1.6.1 replace

                1.6.2 replaceFirst 与 replaceALL 

        1.7 字符串的分割

         1.8 字符串的截取 

        1.9 字符串的清除

        1.10 小总结 (重要)

二. StringBuffer类

        2.1 StringBuffer类的说明  

        2.2 字符串的插入

                2.2.1 insert

                2.2.2 append

        2.3 字符串的删除 

        2.4 StringBuffer类型 ==> String类型

        2.5 小总结 

 三.StringBuilder类

        3.1 StringBuilder类的说明 

        3.2 StringBuilder类中的常用方法 

        3.3 小总结 

四. 总结 


一.String类

        1.1 String字符串不可变的原因

String类 定义的字符串是不可变的.

 1. 第一个 final 表示这个类不能够再被其他类继承.

 2. 第二个 final 表示 value 这个值是常量, 不能够进行修改, 但是可以修改value这个引用指向的对象中的值.(也就是说这个数组中的值是可以修改的, 但是value的值不能被修改)

 3. private才是String类定义的字符串不可变的真正原因.

     被private修饰 表示这个成员变量只能够在当前类中进行访问, 所以value指向的对象(数组)中的值在String类外不能够被修改. 这也是 String定义的字符串是不可变的根本原因.

        1.2 字符串中的比较方法         

                1.2.1 equals

equals 方法 来比较两个字符串的内容是否相等, 返回值是boolean类型.

结果为:  false   false

a. name == name2 比较两个字符串的地址是否相等.

b. name.equals(name2) 比较两个字符串的内容是否相等.

                1.2.2 compareTo 与 compareToIgnoreCase

compareTo 方法:比较两个字符串的大小 (大小写敏感).

compareToIgnoreCase 方法: 也是比较两个字符串的大小, 但是忽略大小写.

返回值是整型.

结果为:  >      <

 compareTo重写了 Comparable 接口中的抽象方法.

 compareToIgnoreCase 本质上调用的是 Comparator接口中的compare方法.

        1.3 字符串中的查找方法

                1.3.1 charAt 

 charAt 返回的是字符串中指定下标的字符.(char)

返回值是 char字符类型

结果为: 字符b

需要知道的是: 字符串中没有下标, 本质上是 value 字符数组中对应的下标.

          1.3.2 indexOf 与 lastIndexOf

indexOf: 是从前往后找

lastIndexOf: 从后往前找

返回值是整形, 下标, 没有找到时返回 -1.

 结果为:  2    0     2

这两个方法 也支持在一定范围内查找.

        1.4 字符串中的转换方法

                1.4.1 valueOf

String.valueOf(): 将其他类型的数据转换为字符串, 返回值是字符串.

 结果是: 1001      9.91

valueOf这个方法, 前面的类是表示什么类型的, 就是将后面的数据转换为什么类型.

                1.4.2 toUpperCase 与 toLowerCase

 toUpperCase: 将小写字母转换为大写字母.

 toLowerCase: 将大写字母转换为小写字母.

结果是: NMBG11      nmbg22

只转换字母, 其他字符不变.

        1.5 字符串的格式化 

format方法: 将字符串格式化, 返回值是一个字符串.                 

 结果是: 2024年5月28日

类似于 System.out.printf() 方法.

        1.6 字符串的替换        

                1.6.1 replace

 replace: 以指定内容来替换字符串中全部的指定内容. (字符串, 字符都可以)

返回值是字符串

 结果为: CSDN11     hmbg11

 支持 字符串替换字符串, 字符替换字符.

                1.6.2 replaceFirst 与 replaceALL 

 replaceFirst: 以指定内容来替换字符串中第一次出现的指定内容. (只能字符串)

 replaceAll: 以指定内容来替换字符串中全部的指定内容. (只能字符串)

返回值都是字符串.

 

结果为: hahaabcabcd      hahahahachahacd

注意: replaceFirst 与 replaceAll 都是只能够替换字符串

        1.7 字符串的分割

 split: 根据指定内容来分割字符串. 返回值是 字符串数组.

结果是: hello   w   orld (一个个字符串).

         1.8 字符串的截取 

substring: 截取指定区间内的字符串, 返回值是字符串. (注意前闭后开区间)        

结果是: mbg   (前闭后开区间)

        1.9 字符串的清除

 trim: 清除字符串左右两边的空格, 返回值是字符串.

结果是:  nm   bg  11 (两边没有空格)

        1.10 小总结 (重要)

String类中的 方法, 凡是涉及到需要修改原字符串内容的, 都是生成了一个新的字符串. 


二. StringBuffer类

        2.1 StringBuffer类的说明  

StringBuffer类定义的字符串是可变的, 直接对原字符串进行修改. 

        2.2 字符串的插入

                2.2.1 insert

insert: 在字符串中的指定位置插入字符串, 对原字符串进行了修改.

返回值是 StringBuffer类型. 

结果是: hellonmbg11     hellonmbg11

可以发现, 原字符串真的发生的改动.

                2.2.2 append

 append: 在原字符串末尾插入指定内容, 尾插.

 返回值是 StringBuffer类型.

结果是: hellonmbg11     hellonmbg11

        2.3 字符串的删除 

 delete: 删除原字符串中指定区间内中的内容, 返回值是StringBuffer类型.

结果是: heo  

前闭后开区间

        2.4 StringBuffer类型 ==> String类型

toString 方法: 将StringBuffer类型的字符串 转换为 String类型的字符串. 

返回值是 String类型.

 

结果是: hello (String类型)

        2.5 小总结 

a. StringBuffer定义的字符串 直接在原字符串上进行修改. 

b. StringBuffer 用于多线程. (后面会讲到)


 三.StringBuilder类

        3.1 StringBuilder类的说明 

 StringBuilder类定义的字符串是可变的, 直接在原字符串上修改. 

        3.2 StringBuilder类中的常用方法 

StringBuilder中的大多数方法与StringBuffer中的方法是一致的, 用法也一致. 

        3.3 小总结 

 a. StringBuilder定义的字符串 直接在原字符串上进行修改. 

 b. StringBuilder 用于单线程 (后面会讲到).


四. 总结 

a. String类定义的字符串是不可变的, 凡是涉及到修改字符串的, 都是生成了一个新的字符串.

b. StringBuffer类 和 StringBuilder类定义的字符串是可变的, 直接在原字符串上修改. 

c. StringBuffer类 用于多线程.

d. StringBuilder类 用于单线程.

这篇关于[JAVASE] String类 StringBuffer类 StringBuilder类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013791

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映