[JAVASE] String类 StringBuffer类 StringBuilder类

news2024/11/15 12:27:35

目录

一.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类 用于单线程.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PMP必考点】2024年PMP敏捷知识必考点-工件篇

PMP自2023年8月起启动了PMBOK第七版教材&#xff0c;考试内容的侧重点也发生了改变&#xff1a;大幅增加了敏捷相关的内容。以往考纲只有不到10%的敏捷管理的内容&#xff0c;新考纲的敏捷管理题目增加至50%。所以如果复习只用之前的题目是远远不够的&#xff0c;必须要多刷新考…

el-tabs中的下拉框被覆盖解决方法

解决方法&#xff1a; ::v-deep .el-tabs__content{// overflow:hidden 会导致 分页下拉框超出部分会被.el-tabs__content隐藏overflow: visible; }

JEPaaS 低代码平台 accessToTeanantInfo SQL注入漏洞复现

0x01 产品简介 JEPaaS低代码开发平台开源版 旨在帮助企业快速实现信息化和数字化转型。该平台基于可视化开发环境,让软件开发人员和业务用户通过直观的可视化界面来构建应用程序 ,而不是传统的编写代码方式。 用户可以在开发平台灵活各个图形化控件,以构建业务流程、逻辑和…

Linux基础学习笔记

目录 1、Linux安装 1.1 安装教程 1.2 Linux目录结构 2、Linux常用命令 2.1 ls 2.2 命令分类 2.3 目录处理命令 2.4 操作文件命令 2.5 查找文件命令 2.6 ln链接命令 2.7 进程相关命令 ​编辑3、配置网络 3.1 关闭windows防火墙 3.2 配置好虚拟机的局域网 3.3 配置…

[数据集][目标检测]红外兔子检测数据集VOC+YOLO格式96张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;96 标注数量(xml文件个数)&#xff1a;96 标注数量(txt文件个数)&#xff1a;96 标注类别数…

【Linux】常见命令:fping的介绍和用法举例

一、fping命令的安装 在终端中输入如下命令&#xff08;Ubuntu系统使用apt install&#xff0c;CentOS系统使用yum install&#xff09; sudo apt install fping安装效果&#xff08;截图&#xff09;&#xff1a; 二、fping命令的用法和选项 fping命令用于检测主机是否存在…

01 Nginx安装部署(系列篇)

一、安装部署 1、Nginx的发行版本 常用版本分为四大阵营&#xff1a; Nginx 开源版 | https://nginx.org/&#xff1a;赤裸裸的Web服务器、反向代理、负载均衡&#xff08;功能少&#xff0c;开发难度大&#xff09; Nginx Plus 商业版 | https://www.nginx.com/&#xff1a;…

当今世界三个最厉害的人物颜廷利:全球最受欢迎的点赞第一人

我们生活在一个历史的拐点&#xff0c;一个要求我们重新构思自我、解读世界以及预见未来的时代。在这个时代&#xff0c;那些能够洞悉社会发展的深层逻辑&#xff0c;并据此提出全新定义的人&#xff0c;将成为引领人类思维、塑造普遍价值观和主导全球发展议程的先锋。因此&…

python-合并排列数组 I

问题描述&#xff1a;合并两个按升序排列的整数数组a和b&#xff0c;形成一个新数组&#xff0c;新数组也要按升序排列。 问题示例&#xff1a;输入A[1],B[1],输出[1,1],返回合并后的数组。输入A[1,2,3,4],B[2,4,5,6],输出[1,2,2,3,4,4,5,6],返回合并所有元素后的数组。 完整代…

PyTorch张量索引用法速查

作为数据科学家或软件工程师&#xff0c;你可能经常处理大型数据集和复杂的数学运算&#xff0c;这些运算需要高效且可扩展的计算。PyTorch 是一个流行的开源机器学习库&#xff0c;它通过 GPU 加速提供快速灵活的张量计算。在本文中&#xff0c;我们将深入研究 PyTorch 张量索…

数字资产革命:Web3带来的新商业机会

随着区块链技术的不断发展和普及&#xff0c;数字资产正逐渐成为全球范围内的热门话题。作为区块链技术的重要应用之一&#xff0c;Web3正在带来一场数字资产的革命&#xff0c;为传统商业模式带来了全新的机遇和挑战。本文将深入探讨数字资产革命与Web3的关系&#xff0c;探索…

vue学习汇总

目录 一、vue基本语法 1.插值表达式 {{}} 2.显示数据(v-text)和(v-html) 3.事件处理(v-on) 4.循环遍历(v-for) 5.判断语法(v-if) 6.元素显示与隐藏(v-show) 7.动态设置属性(v-bind) 8.数据双向绑定(v-model) 9.计算属性 二、vue组件 1.使用组件的三个步骤 2.注册组…

Android manifest清单文件意外权限来源和合并规则

问题背景 当自写APP发现无缘无故多申请了多个权限,其中一个就是:android.permission.WAKE_LOCK. 一想就知道如果并非自己在APP main中引入的,那就是依赖的库清单文件导入进来的. 定位问题 定位手段 1.manifest-merger-buildVariant-report.txt 根据其内容可知, WAKE_LOCK 权…

Nuxt3 中使用 ESLint

# 快速安装 使用该命令安装的同时会给依赖、内置模块同时更新 npx nuxi module add eslint安装完毕后&#xff0c;nuxt.config.ts 文件 和 package.json 文件 会新增代码段&#xff1a; # nuxt.config.ts modules: ["nuxt/eslint" ] # package.json "devDep…

睿联技术对亚马逊既依赖又竞争:递表前大额分红,资金充裕又补流?

《港湾商业观察》施子夫 王璐 今年3月29日&#xff0c;冲刺创业板IPO的深圳市睿联技术股份有限公司&#xff08;以下简称&#xff0c;睿联技术&#xff09;提交了注册&#xff0c;不出意外的话&#xff0c;公司离挂牌上市已经近在咫尺。 然而&#xff0c;在目前资本市场尤其…

第二十三届中国科学家论坛盛大开幕,星医联董事长杨星荣获“十四五”科技创新先锋人物

2024年5月25-26日&#xff0c;第二十三届中国科学家论坛在北京召开&#xff0c;北京星医联科技有限公司&#xff08;以下简称“星医联”&#xff09;董事长杨星女士受邀出席并荣获“十四五科技创新先锋人物”称号。同时星医联专利“一种靶向协同降脂的纳米双药制备及应用”荣获…

pytorch深度学习-环境搭建-2

1.1下载cudnn,解压 1.2.找到本级cuda安装路径 1.3.刚才解压文件复制到cuda安装目录 2.1 安装pytouch conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia

FPGA——eMMC验证

一.FPGA基础 1.FPGA烧录流程 (1) 加载流文件 —— bitfile (2) 烧录文件 —— cmm 二.MMC 1.基础知识 (1)jz4740、mmc、emmc、sd之间的关系&#xff1f; jz4740——处理器 mmc——存储卡标准 emmc——mmc基础上发展的高效存储解决方案 sd—— 三.eMMC和SD case验证 1.ca…

超声波清洗机哪家好用又实惠?四款好评如潮的超声波清洗机推荐

很多戴眼镜的朋友都在寻求一种既能保护眼镜光泽又能深层清洁的方法时&#xff0c;超声波清洗机无疑成为了许多眼镜用户的首选&#xff0c;可以更好清洗眼镜&#xff0c;从而避免眼镜的污渍而导致我们眼部出现过敏的问题。但在市场上琳琅满目的超声波清洗机中&#xff0c;哪些才…

第13章 常用类

一、包装类 二、String String的常用方法&#xff1a; equals&#xff1a;判断内容是否相等&#xff0c;区分大小写。 String str1 "hello";String str2 "Hello";System.out.println(str1.equals(str2));//false equalsIgnoreCase&#xff1a;判断内容…