走进Java:String字符串的基本使用

❀❀❀  大佬求个关注吧~祝您开心每一天  ❀❀❀

目录

一、什么是String

二、如何定义一个String

1. 用双引号定义

2. 通过构造函数定义

三、String中的一些常用方法

1 字符串比较

1.1 字符串使用 ==

1.2 字符串使用equals()

 1.3 使用 equalsIgnoreCase()

1.4 cpmpareTo和compareToIgnoreCase

2 字符串大小写转换 

 2.1 toUpperCase()

2.2 toLowerCase()

3  字符串长度获取

3.1 length()

4  判断是否包含一段字符串

4.1 contains()

5 字符串切割和拼接 

5.1 split()

5.2 join()

6 字符串寻找字串起始位置

6.1 indexOf()

6.2 lastIndexOf() 

7 获取字串

7.1 substring()

8 字符串替换 

8.1  replace()

8.2 replaceAll()


今天学习到了Java中的String,String是Java中一个非常重要的类,在我们做字符串操作的时候,需要使用到String。

一、什么是String

String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表示。

char str [] = {'a', 'b', 'c'};

在Java中,String像是一个很大的char数组,我们在定义字符串的时候,不需要再去像上方代码一样去定义,而是直接可以使用String去定义。

String str = "abc";

String就像是很大的char数组,但相比于char数组而言,String可以做字符串拼接操作,而char数组并不能直接去做字符串的拼接,如下代码。

String str = "abc" + "def";

二、如何定义一个String

既然知道String是一个类,那么类一定有他的初始化方法,在Java中,String的初始化有以下几种常用的方式。这是官方给出的一些介绍。

1. 用双引号定义

String字符串,可以直接通过双引号来定义,把需要的字符串内容用双引号包裹,可以直接对String类型的对象赋值。

public class StringDemo {public static void main(String[] args) {String str = "abc";}
}

2. 通过构造函数定义

String作为一个类,可以通过new关键字初始化,在Java中可以通过构造函数对String类型的对象赋值。

public class StringDemo {public static void main(String[] args) {String str = new String("abc");System.out.println(str);}
}

这是一种基本的构造字符串的方式,除此之外还有一些其他的构造方式。

通过无参构造函数初始化

这样的方式初始化的String的值为空,也就是什么都没有。

public String() {this.value = "".value;this.coder = "".coder;}

通过char数组进行初始化

String可以传入一个char数组进行初始化,String会拼接char数组当中的所有字符。

public String(char value[]) {this(value, 0, value.length, null);}

带位移的方式通过char数组进行初始化

这样的方式和上边的方式其实是一样的,只不过在初始化字符串的时候,会根据传入的offset作为char数组开始拼接的起始索引,并且拼接上count个字符。

public String(char value[], int offset, int count) {this(value, offset, count, rangeCheck(value, offset, count));}

除了以上几种常用的方式外,还有一些其他的方式,如通过int数组进行初始化,通过byte数组进行初始化,大家感兴趣的话可以自己研究一下。 

三、String中的一些常用方法

了解到什么是String,下面就要理解一些String中常用的方法。

1 字符串比较

字符串之间的比较又分为很多不同的方法,下边是一些常用的字符串比较方法。

1.1 字符串使用 ==

字符串使用 == 操作,其实是一个有坑的点,一般不用,这里不在多讲,有兴趣的可以尝试一下以下代码。

1.2 字符串使用equals()

字符串的比较,使用这个方法比较多一点。

 1.3 使用 equalsIgnoreCase()

这个方法相比于普通的equals方法的区别是,这个方法是忽略大小写的。

除此之外,字符串比较还有这两个方法。

1.4 cpmpareTo和compareToIgnoreCase

这两个方法和equals方法的区别是,equals返回的是boolean类型的变量,而compare方法返回的是int类型的变量。

具体比较方法如下:

  1. 两个字符串按照单个字符从前向后作比较,遇到不同的字符,返回两个字符的差值
  2. 如果两个字符比较完成了,没有发现不同的字符,返回两个字符串的长度差。

2 字符串大小写转换 

String中还提供了一些字符串大小写转换的方法。

 2.1 toUpperCase()

这个方法就是把字符串全部转换为大写。

2.2 toLowerCase()

这个方法把字符串全部转换为小写 

3  字符串长度获取

3.1 length()

字符串长度的获取通过以下方法获取。

4  判断是否包含一段字符串

4.1 contains()

String是有子字符串的概念的,比如我们要查看某个字符串中是否包含一小段的字符串,我们可以用以下方法。

5 字符串切割和拼接 

5.1 split()

字符串的切割和拼接是非常实用的方法,现在我们有这样的一个字符串。

String students = "zhangsan,lisi,wangwu,liuliu";

我们想要把这些姓名拆分出来,就需要用到下边的方法。

对于字符串切割,我们需要传入一个作为分割的字符,在上方的代码当中传入的是一个",",当然在具体应用的时候,还要根据具体的场景做分析。

5.2 join()

除了字符串分割外,当然也有字符串拼接的操作,如果我们想把studentArr中的学生姓名用横杠拼接起来,像这样

zhangsan-lisi-wangwu-liuliu

需要以下代码完成,这里只介绍基本的使用。

6 字符串寻找字串起始位置

我们可以判断字串是否存在,也可以获取子串在字符串的起始索引。

6.1 indexOf()

看下方代码,我们试图在字符串中寻找有没有值为"lisi"的字符串,我们调用indexOf方法就可以,

indexOf方法有两种,一种是直接传匹配字串,另外一种是传入匹配子串的同时传入开始匹配的起始下边,比如我们从索引10开始寻找,因为lisi的开始索引为9,当我们把开始匹配的下标放到10的时候,就没有办法在匹配到"lisi"了。

6.2 lastIndexOf() 

和indexOf()是一样的,不同的是,lastIndexOf()是判断的结尾,是从后往前找的。

7 获取字串

7.1 substring()

字串可以判断存不存在,可以获取起始下标,当然也可以获取子串。通过起始下标和结束下标来截取子串。

 

 

8 字符串替换 

  • replace:有两个重载形式,replace(char oldChar, char newChar)用于字符替换,replace(CharSequence target, CharSequence replacement) 可用于字符串替换。这里的CharSequence是字符串序列,简单理解就是字符串 ,该方法不会将参数解析为正则表达式。
  • replaceAll:方法签名为replaceAll(String regex, String replacement),参数regex要求是一个正则表达式字符串,它会按照正则表达式规则去匹配字符串中的子串并替换 。如果传入的不是正则表达式,也会当作普通字符串处理。
  • replaceFirst:方法签名为replaceFirst(String regex, String replacement) ,和replaceAll一样,第一个参数regex也是基于正则表达式的,不过它只替换第一次匹配到的子串。当传入非正则表达式的普通字符串时,也能进行字符串替换操作。

 

对于一些不想要的字符,也是可以替换的,拿上方的这个字符串来说。

String students = "zhangsan,lisi,wangwu,liuliu";

如果不想要逗号了,想要用横线分割,下方代码可以实现。

8.1  replace()

8.2 replaceAll()

与replace()不同的是,replaceAll()是可以传入正则表达式的,这里不在讲正则表达式,以下的方式也是可以替换的。

 

 以上就是一些常用的String的使用方法。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2.2节 Android Jacoco插件覆盖率采集

JaCoCo(Java Code Coverage)是一款开源的代码覆盖率分析工具,适用于Java和Android项目。它通过插桩技术统计测试过程中代码的执行情况,生成可视化报告,帮助开发者评估测试用例的有效性。在github上开源的项目&#xff…

OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap

乒乓缓冲核心思想 不使用乒乓缓冲,如果要每个滤镜作用下的绘制内容,也就是这个滤镜作用下的帧缓冲,需要创建一个Frame Buffer Object加上对应的Frame Buffer Object Texture使用乒乓缓冲,只用两个Frame Buffer Object加上对应的F…

Unity导出WebGL,无法加载,data文件无法找到 404(NotFound)

问题:data文件无法找到404Not found 示例是使用IIS托管启动 F12可以看到not found 的报错 解决办法: iis无法识别data文件,在MIME类型中增加data 类型:application/octet-stream 添加之后,会在根目录下生产一个…

C++与OO思想的联系

一、C与OO思想的联系 C:OO思想(面向对象--属性和行为) 任何事务都可以被看做一个个对象,一个再复杂的模型结构都是由千千万万个对象组成。 OO思想两个要素:属性和行为(方法)。 OO思想的特点: 封装&#x…

单表达式倒计时工具:datetime的极度优雅(DeepSeek)

一个简单表达式,也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建,本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…

Kubernetes的Replica Set和ReplicaController有什么区别

ReplicaSet 和 ReplicationController 是 Kubernetes 中用于管理应用程序副本的两种资源,它们有类似的功能,但 ReplicaSet 是 ReplicationController 的增强版本。 以下是它们的主要区别: 1. 功能的演进 ReplicationController 是 Kubernete…

CSS基础知识一览

持续维护 选择器 display 常用属性 浮动 弹性布局

IS-IS原理与配置

一、IS-IS概述 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO(International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNet…

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看! 一、Visual Studio Code下载 下载官网:https://code.visualstudio.com/ 进入官网后点击右上角的Download &…

git推送代码相关学习——(一)

推荐去阅读一下廖老师的git相关的教程https://liaoxuefeng.com/books/git/introduction/index.html 这个系列就来学习一下git操作。 第一步,新建项目 去github中新建一个项目,然后依据项目来进行本地的开发工作。 第二步,拉取项目 git c…

CMS网站模板设计与用户定制化实战评测

内容概要 在数字化转型背景下,CMS平台作为企业内容管理的核心载体,其模板架构的灵活性与用户定制能力直接影响运营效率。通过对WordPress、Baklib等主流系统的技术解构发现,模块化设计理念已成为行业基准——WordPress依托超过6万款主题库实…

Maya基本操作

基本操作 按住ALT键,左键旋转视角,中键平移视角,右键放大缩小视角。 按空格键切换4格视图。 导入FBX格式文件后,无贴图显示。 按6键开启。着色纹理显示 坐标轴相关 修改菜单-左键最上面的虚线。固定修改选项窗口。 选中物体…

政安晨【超级AI工作流】—— 使用Dify通过工作流对接ComfyUI实现多工作流协同

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 一、准备工作 Dify跑起来 ollama局域网化配置 Dify配置并验证 启动ComfyUI 二、…

【蓝桥杯】12111暖气冰场(多源BFS 或者 二分)

思路 这题可以用BFS做,也可以用二分来做。 用二分这里只提供一个思路:对时间来二分查找,check函数就是检查在特定的时间 t 0 t_0 t0​内每一个暖气炉的传播距离能否覆盖所有格子。 用BFS做: 由几个点开始向外扩散,知道…

【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

【JavaEE】网络编程socket

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

超硬核区块链算法仿真:联盟链PBFT多线程仿真实现 :c语言完全详解版

1 22年年底想用gpt做出一个pbft的算法仿真,到了25年终于可以结合gpt grok perplexcity deepseek等实现了!!!!! 1.1简化版 // 定义 Windows 版本,确保条件变量相关函数可用 #define _WIN32_W…

【并发编程】聊聊forkJoin的原理和最佳实践

对于线程池来说,其实本质就是一个生产者消费者的模式,而通过竞争的方式从队列中获取任务执行。本质上其实就是按照任务级别进行处理,但是对于一些可以分而治之的任务,传统的线程池没有办法分治处理。一是无法对大任务进行拆分&…

【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 遗传算法GA2. 长短期记忆网络LSTM3. 基于GA-LSTM的光伏功率预测4. 部分代码展示5. 运行结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 …

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop,安装过程很简单,一路下一步即可。用 OnlyOffice 制作 PDF 模版(表单) 使用 OnlyOffice 表单设计器,制作表单,如下图 注意命名…