小怡分享之Java的String类

news2024/11/26 21:40:49

前言:

       🌈✨之前小怡给大家分享了图书管理系统这个项目,今天小怡给大家分享Java的String类。

1.String类的重要性

          String是字符串类型,C语言中没有字符串类型。 Java当中没有说字符串的结尾是 \0这样的说法。C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据分离开的方式不符合面向对象的思想,而字符串应用又非常广泛,Java语言专门提供了String类

2.常用方法 

2.1   字符串构造 

           String类提供的构造方式非常多,常用的就以下三种:

【注意】

1.String是引用类型,内部并不存储字符串本身;

2.在Java中,“”引起来的也是String类型对象。 

2.2   String对象的比较 

           字符串的比较是常见操作之一,比如:字符串排序。Java中总共提供了四种方法:

1.==比较是否引用同一个对象 

      对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。 

2.boolean equals(Object anObject)方法:按照字典序比较

          字典序:字符大小的顺序。

          String类重写了父类的Object中equals方法,Object中equals默认按照==比较,String重写equals方法后,按照下面进行比较:

System.out.println("s1.equals(s2)");

3.int compareTo(String s)方法:按照字典序进行比较 

         与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体的比较方式:

(1)先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值;

(2)如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。

System.out.println(s1.compareTo(s2));

4.int compareToIgnoreCase(String str)方法:与compareTo方式相同,但是忽略大小写比较 

System.out.println(s1.compareToIgnoreCase(s2));

2.3   字符串查找 

           字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:

方法功能
char charAt(int index)返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常
int indexOf(int ch)返回ch第一次出现的位置,没有返回-1
int indexOf(int ch,int fromIndex)从fromIndex位置开始找ch第一次出现的位置,没有返回-1
int index(String str)返回str第一次出现的位置,没有返回-1
int indexOf(String str,int fromInndex)从fromIndex位置开始找str第一次出现的位置,没有返回-1

int lastIndexOf(int

 ch)

从后往前找,返回ch第一次出现的位置,没有返回-1

int lastIndexOf(int

 ch,int fromIndex)

从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1
int lastIndexOf(Sting str)从后往前找,返回str第一次出现的位置,没有返回-1
int lastIndexOf(Sting str,int fromIndex)从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1

2.4   转化 

        只要涉及到String类型的转变,都不是在原有的字符串上进行修改。原理:会产生一个新的字符串。  

1.数值和字符串转化 

        s4这一行代码是序列化,把对象变成了字符串。    

 

2.大小写转换 

 

3.字符串转数组 

 

 

4.格式化 

2.5   字符串替换 

          使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:

方法功能
String replaceAll(String regex,String replacement)替换所有的指定内容
String replaceFirst(String regex,String replacement)替换首个内容

注意事项:由于字符串是不可变对象,替换不修改当前字符串,而是产生一个新的字符串。 

2.6    字符串拆分 

           可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

方法功能
String[] split(String regex)将字符串全部拆分
String[] split(String regex,int limit)将字符串以指定的格式,拆分成limit组

注意:拆分是特别常用的操作,一定要重点掌握。另外有些特殊字符作为分隔符可能无法正确划分,需要加上转义。

1.字符“|”,“*”,“+”都得加上转义字符,前面加上“\\”;

2.如果是“\”,那么就得写成“\\\\”;

3.如果一个字符串中有多个分隔符,可以用“|”作为连字符。 

 

2.7   字符串截取 

         从一个完整的字符串中能截取出部分内容。

方法功能
String substring(int beginIndex)从指定索引截取到结尾
String substring(int beginIndex,int endIndex)截取部分内容

注意事项:

1.索引从0开始;

2.注意前闭后开区间的写法,substing(0,5)表示包含0号下标的字符,不包含5号下标。 

2.8   其他操作方法 

方法功能
Sting trim()去掉字符串中的左右空格,保留中间空格
String toUpperCase()字符串转大写
String toLowerCase()字符串转小写

代码示例:观察trim()方法的使用

String str="  hello world  ";
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");

        trim会去掉字符串开头和结尾的空白字符(空格、换行、制表符等)。

 

2.9   字符串的不可变性 

          String是一种不可变对象。字符串的内容是不可改变。字符串不可被修改,是因为:

  1. String类在设计时就是不可改变的,String类实现描述中已经说明了;
  2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象。

 

2.10   字符串修改 

           注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低。

public static void main(String[] args){
     String s="hello";
     s+="world";
     System.out.println(s);
}

         可以看到在对String类进行修改时,效率是非常慢的,因此,尽量避免对String的直接修改,如果要修改建议尽量使用StringBuffer和StringBuilder。 

 

3. StringBuffer和StringBuilder

3.1   StringBuilder介绍 

          由于String 的不可更改特性,为了方便字符串的修改,Java中又提供了 StringBuffer和StringBuilder类。这两个类大部分功能是相同的,这里介绍StringBuilder常用的一些方法。

方法功能
StringBuff append(String str)在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量
char charAt(int intdex)获取index位置的字符
int length()获取字符串的长度
int capacity()获取底层保存字符串空间总的大小
void ensureCapacity(int mininmumCapacity)扩容
void setCharAt(int index,char ch)将index位置的字符设置为ch
int indexOf(String str)返回str第一次出现的位置
int index(String str,int fromIndex)从fromIndex位置开始查找str最后一次出现的位置
StringBuff insert(int offset,String str)在offset位置插入:八种基类类型&String类型&Object类型数据

StringBuffer deleteCharAt(int index)

删除index位置字符

StringBuffer delete(int start,int end)

删除[start,end)区间内的字符
StringBuffer replace(int start,int end,String str)将[start,end)区间内的字符替换为str
String substring(int start)从start开始一直到末尾的字符以String的方式返回
String substring(int start,int end)将[start,end)范围内的字符以String的方式返回
StringBuffer reverse()反转字符串
String toString()将所有字符按照String的方式返回

         String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改。频繁修改字符串的情况可以考虑使用StringBuilder。 

注意: String、StringBuffer、StringBuilder的区别

  • String的内容不可以修改,StringBuffer与StringBuilder的内容可以修改;
  • StringBuffer与StringBuilder大部分功能是相似的;
  • StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。

 

🌈✨今天的分享到这里结束啦,小怡和大家一起进步一起学习,“记得三个尊:尊敬自已,尊重旁人,维持尊严,对自已的行动尽责”。 

 

 

             

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

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

相关文章

【爬虫实战】利用代理爬取Temu电商数据

引言 在行业竞争激烈、市场变化快速的跨境电商领域,数据采集可以帮助企业深入了解客户需求和行为,分析市场趋势和竞争情况,从而优化产品和服务,提高客户满意度和忠诚度。同时,数据采集可以实时跟踪库存水平和销售情况&…

Windows10上安装SQL Server 2022 Express

Microsoft SQL Server 2022 Express是一个功能强大且可靠的免费数据管理系统,可为轻量级网站和桌面应用程序提供丰富可靠的数据存储,为关系数据库: (1).LocalDB(SqlLocalDB):是Express的一种轻型版本,该版本具备所有可…

常见中间件漏洞复现之【Tomcat】!

Tomcat介绍 tomcat是⼀个开源⽽且免费的jsp服务器,默认端⼝ : 8080,属于轻量级应⽤服务器。它可以实现 JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的⼀款环境。 在历史上也披露出来了很多的漏洞 …

Python爬虫实战:利用代理IP爬取百度翻译

文章目录 一、爬取目标二、环境准备三、代理IP获取3.1 爬虫和代理IP的关系3.2 巨量IP介绍3.3 超值企业极速池推荐3.4 IP领取3.5 代码获取IP 四、爬虫代码实战4.1分析网页4.2 寻找接口4.3 参数构建4.4 完整代码 一、爬取目标 本次目标网站:百度翻译(http…

Java I/O (Input/Output)——文件字节流

博客主页:誓则盟约系列专栏:Java SE 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Java I/O 简介 Java I/O(输入/输出)是 Java 程序中…

抖音ip地址怎么换到别的地方

在数字化时代,抖音作为一款风靡全球的短视频社交平台,让我们的生活充满了无限乐趣与创意。然而,有时我们可能希望自己的抖音能够显示一个不同于当前所在地的IP地址,无论是出于隐私保护、还是其他个性化需求。那么,如何…

Linux学习记录(三)-----文件io和标准io的区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言文件IO和标准IO的区别1.\r和\n的区别2.缓冲2.1缓冲区的概念2.2.缓冲区的分类 3.文件IO和标准IO的区别 前言 文件IO和标准IO的区别 1.\r和\n的区别 \r 回车操作…

无人机之植保机篇

一、什么是植保无人机 植保无人机是用于农林植物保护作业的无人驾驶飞机,该型无人飞机由飞行平台、导航飞控、喷洒机构三部分组成,通过地面遥控器或导航飞控,来实现喷洒作业,可以喷洒药剂、种子、粉剂等。目前国内销售的植保无人机…

【已解决】VSCode连接Linux云服务器,代码写着写着服务器突然挂了是怎么回事?

文章目录 1. 问题描述2. 问题原因3. 解决方法 1. 问题描述 在使用 VSCode 连接远程 Ubuntu 云服务器写代码的时候,感觉越写越卡,代码提示半天出不来,最后更是直接断开连接了: 即使把 VSCode 关了,再重启也没用&#x…

五种IO模型与阻塞IO

个人主页:Lei宝啊 愿所有美好如期而遇 IO本质 我们常说IO就是input,output,也就是输入和输出,但是,他的本质是什么?站在OS角度,站在进程的角度,IO是什么?我们想&#…

申请专利需要准备哪些材料?

申请专利需要准备哪些材料?

代码之外的生存指南——自我营销

你是否有去过酒吧、夜店看过驻场乐队的演出? 你到了那里面听过之后你会发现那些乐队的演唱水平丝毫不亚于原唱的艺术家们,都很有才华; 你有没有想过【为什么这些驻场乐队就只能在那小小的夜店里做驻唱演出,每天疲于奔命&#xff0…

图综述-GGNN详解

A Survey of Geometric Graph Neural Networks:Data Structures, Models and Applications 本文主要介绍了在化学领域的分子设计和预测任务中,如何利用几何图神经网络(Geometric Graph Neural Networks,简称GGNN)来处理具有几何信…

怎样可以撰写出一篇优质软文呢?

现在这个互联网飞速发展的时代,软文推广已经逐渐变成了现在很多企业和品牌的推广宣传方式了,虽然软文推广操作起来很简单,但是想要做好没那么简单,软文稿件的质量和推广的流量更是息息相关。 好的软文不止可以让转化更高&#xff…

不容忽视!猫咪浮毛问题严重,宠物空气净化器教你一招清理

拥有一只可爱的猫咪,无疑是家庭中温馨与欢乐的源泉,但同时,宠物的毛发管理也成为了不少家庭面临的日常挑战。每当家中四处飘散着它们细腻的毛发,尤其是拥抱过后,衣物上不经意间沾满了轻盈的浮毛,宠物们随着…

【Material-UI】按钮组件的限制及解决方法详解

文章目录 一、ButtonBase 组件与禁用状态的限制1. 默认行为:pointer-events: none示例代码 2. 显示 not-allowed 光标的解决方案方法一:纯 CSS 解决方案方法二:DOM 结构变化 3. 工具提示(Tooltip)与禁用状态 二、其他常…

Javascript——原始数据类型的自动装箱

自动装箱 聊个例子介绍例子 聊个例子 ‘asd’.length //这其中是怎么执行的在 JavaScript 中,字符串是原始数据类型(primitive data type),但它们表现得像对象,因为它们有属性和方法。当你对一个字符串使用 .length 属…

原型图绘制技巧

针对于 Axure RP绘图软件。 1、拉辅助线 目的,确定画布大小尺寸从上面和左面的刻度尺上,点击鼠标,拖动,就可以拉出一条线。 2、画布底模设为组件 右键转换为母版,方便后续其他页面使用 3、按钮 按钮字体不要太大&am…

【Material-UI】Button 组件自定义详解

文章目录 一、自定义 Button 组件的基础1. 基于 styled 方法的自定义2. styled 方法详解3. 覆盖默认样式 二、高级自定义技巧1. 主题色彩与调色板2. 无障碍性与响应式设计 三、集成与测试1. 集成到项目中2. 测试自定义样式 四、总结 在使用 Material-UI 开发 Web 应用时&#x…

动态贝叶斯网络DBN介绍

动态贝叶斯网络DBN介绍 1. 引言2. 贝叶斯网络与动态贝叶斯网络2.1 贝叶斯网络简介2.2 动态贝叶斯网络详细介绍2.3 两种网络对比 3. 搭建动态贝叶斯网络的方法3.1 定义网络结构3.2 参数学习3.3 推理3.4 结构学习和参数学习的方法3.4.1 结构学习3.4.2 参数学习 4. 总结5. 参考文献…