JavaSE:String类常用方法(巨详细)

1、引言

在学习C语言时,我们就已经了解了字符串,但是在C语言中字符串只能用字符数组或者指针来表示,没有特定的字符串类型,而在Java中,我们有了字符串这一特定的类型---String类。

2、String类的常用方法

2.1 字符串的构造方法

在我们定义一个字符串的时候,我们可以使用以下常用的三种方法:

1.通过双引号直接定义

2.通过new对象来定义

3.通过字符数组来定义 

public class Test {public static void main(String[] args) {//1.通过双引号直接定义String s1 = "abc";//2.通过new对象来定义String s2 = new String("abc");//3.通过字符数组来定义char[] arr = {'a','b','c'};String s3 = new String(arr);}
}

2.1.1【注意事项】 String类是一个引用类型

要知道String类是一个引用类型,并非字符串本身:

我们通过调试可以看到,String类中有着四种成员变量,而只有value数组中存储着字符串的值,

在String的源码中,也确实有着四种实例变量:

在这里我们只考虑value数组,因为value数组中存储着我们想要的字符串。

由于String是一个引用类型,在内存中有着以下的存储模式:

2.2 字符串间的比较方法

2.2.1 引用变量存储的值(地址)是否相同

我们已知字符串是引用变量,使用“==”来比较所引用的对象是否为同一份:

2.2.2 字符串的内容是否相同

Object类中的equals方法与“==”的作用相同,而String类重写了equals方法,用来比较字符串中的内容是否相同:

2.2.3 比较字符串的大小

我们点过去String类的源码,可以看到String类也实现了Comparable接口,

说明重写了compareTo方法,我们利用compareTo方法来比较字符串的大小(相同返回0,大于返回正数,小于返回负数):

Java中方法多样,当我们想忽略大小写来比较时,我们可以调用compareToIgnoreCase方法

2.3 String类的查找方法

2.3.1 charAt方法

我们可以通过这个方法来找到字符串中某一下标的字符:

2.3.2 indexOf方法

通过这个方法,我们可以查找(从前往后查找)到某一字符或字符串第一次出现的位置的下标,在String类中,有多个重载的方法,我们可以查找字符,也可以查找字符串。其中fromIndex参数是从指定下标开始查找:

2.3.3 lastIndexOf方法

顾名思义,lastIndexOf方法是从后往前查找某个字符或字符串,我们也可以指定位置从后往前查找:

2.4 与字符串有关的转换方法

2.4.1 数值和字符串的转换

我们可以通过valueOf方法来将数值转换为字符串:

通过相应数字的包装类型来将字符串转换为数字:

2.4.2 大小写转换

2.4.3 字符串和数组的转换

利用这个方法,可以直接将字符串转换为字符数组:

同样,字符数组也可以通过valueOf方法转换为字符串:

若是整形或其他类型数组,使用Arrays类中的toString方法:

2.4.4 对象转字符串

我们可以通过valueOf方法来将对象转换为字符串(重写toString方法):

2.5 字符串的拆分方法

我们可以以某个字符为分割线,将字符串分割为若干个字符数组:

我们也可以以多个字符来分割,用 | 符号来连接

注意:

当以字符"|","*","+","."来分割时,前面需要加上转义字符"\\",

而以"\"来分割时,需要写成"\\\\"(在字符串中就是"...\\...",因为为转义字符不能单独出现,"\\"来代表一个"\")

如下图所示:

2.6 字符串的截取方法

我们通过这个方法,可以截取所想要的子字符串(传入下标之后的子串,也可以指定范围)

代码演示:

1.

我们截取了3下标以后的子串(包括3下标):

2.

我们可以截取指定范围的子串,但注意:所给出的范围是左闭右开!!!

2.7 字符串的替换方法

1.

用一个新字符替换掉字符串中的某个旧字符:

2.

用新字符串替换掉字符串中的旧的子字符串:

3.

替换掉第一个出现的旧子字符串:

4.

替换所有出现的子字符串:

我们发现,使用replace替换字符串和使用replaceAll替换字符串的效果是相同的。

2.8 去除空白字符方法

我们可以利用这个方法来去除字符串开头和结尾(内部的无法去除)的空白字符(空格, 换行, 制表符等)。

OK~本次博客到这里就结束了,

感谢大家的阅读~欢迎大家在评论区交流问题~

如果博客出现错误可以提在评论区~

创作不易,请大家多多支持~

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

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

相关文章

ECU与外部通讯的场景

车辆ECU(电子控制单元)与车辆、路侧单元(RSU)、移动终端等进行直连通信时,确保通信的安全性是非常重要的。证书有效性和合法性的验证是确保通信双方身份真实性和数据传输安全的关键措施。以下是一些应进行证书验证的场…

第98天:权限提升-WIN 全平台MSF 自动化CS 插件化EXP 筛选溢出漏洞

目录 思维导图 前置知识 案例一: Web&Win2008-人工手动&全自动msf-筛选&下载&利用 手动 全自动msf 案例二: Web&Win2019-CS 半自动-反弹&插件&利用 思维导图 前置知识 提权方式,这里讲的是溢出漏洞 windows权限 常…

Java处理CSV文件示例

Java处理CSV文件示例 1. 导入依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.10.0</version></dependency>文件示例 下面是示例文件文件数据 vscode和idea都有解析…

使用python进行网络图绘制

网络图绘制 关系网络 结合下面的关系表格,替换预留的“学号”和“专业”字段为他们各自的学号和专业名称。替换和增加自己的兴趣节点以体现个性化信息。确保关系在网络图中能正确显示。节点表格节点ID名称类型备注1数学系基础节点2计算机科学系基础节点3数据科学组基础节点学…

多线程基础知识

什么是死锁&#xff1f;如何避免死锁&#xff1f; 死锁是指在多线程编程中&#xff0c;两个或多个线程互相等待对方持有的资源&#xff0c;导致程序无法继续执行的状态。 死锁的发生通常需要满足以下四个条件&#xff1a; 互斥条件&#xff1a;至少有一个资源被某个线程独占时&…

智慧林业云巡平台 客户端和移动端(支持语音和视频)自动定位巡护,后端离线路线监测

目前现状 无法客观、方便地掌握护林员的到位情况&#xff0c;因而无法有效地保证巡护人员按计划要求&#xff0c;按时按周期对所负责的林区开展巡护&#xff0c;使巡护工作的质量得不到保证。遇到火情、乱砍滥伐等灾情时无法及时上报处理&#xff0c;现场状况、位置等信息描述…

[IM002][Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序(0]

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 使用navicat 连接sql server出现[IM002][Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序&#xff08;0] 二、原因分析 Navicat没有找到电脑安装的SQLServer驱动 三、解决方…

向传音手机学习产品市场定位与产品需求定义

2024 年第一季度全球智能手机发货量同比增长 11%&#xff0c;排在第一名的是三星&#xff0c;占比 21%&#xff0c;苹果占比 17% 排在第二位&#xff0c;小米 14%排在第三名&#xff0c;传音手机10% 排在第四位&#xff0c;OPPO为 9% 排在第五名。 「非洲之王」传音手机表现十…

数智赋能,变革加速:低代码赋能企业转型变革

随着数字化转型的浪潮&#xff0c;低代码平台成为企业加速创新和转型的关键工具。本文将探讨低代码技术如何帮助企业快速响应市场变化&#xff0c;提升开发效率&#xff0c;降低成本&#xff0c;并推动企业向智能化、自动化转型。 数智赋能的背景 随着科技的飞速发展&#xff0…

【Python】 如何从日期中减去一天?

基本原理 在编程中&#xff0c;日期和时间的处理是一个常见的需求&#xff0c;尤其是在处理日志、调度任务、数据分析等场景中。Python 提供了多种方式来处理日期和时间&#xff0c;其中最常用的库是 datetime。datetime 模块包含了日期&#xff08;date&#xff09;、时间&am…

【python脚本】修改目标检测的xml标签(VOC)类别名

需求&#xff1a; 在集成多个数据集一同训练时&#xff0c;可能会存在不同数据集针对同一种目标有不同的类名&#xff0c;可以通过python脚本修改数据内的类名映射&#xff0c;实现统一数据集标签名的目的。 代码&#xff1a; # -*- coding: utf-8 -*- # Time : 2023/9/11 1…

每天一个数据分析题(三百三十五)

下图表中&#xff0c;适用于展示连续型数据的数据分布情况的是&#xff08;&#xff09; A. 条形图 B. 饼图 C. 直方图 D. 箱线图 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案

全球排名第一的免费开源ERP:Odoo与微信集成的应用场景解析

概述 本文介绍了世界排名第一的开源免费企业应用软件Odoo ERP和企业微信、个人微信的各种对接功能。包括微信登录的对接、微信公众号的对接、微信消息的对接、微信支付的对接、微信打卡的对接、微信小程序的对接。 微信登录的对接 Odoo的登录&#xff0c;除了标准的用户名/密码…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-23.3,4,5,6 讲 I2C驱动-读取AP3216C传感器​

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

“图片在哪”、“我是temunx”、“变成思维导图用xmindparser”gpt给出文本变字典

需求 我的意思是什么 分类清单“图片在哪 我是temunx变成思维导图 用xmindparser用 shell 画思维导图 x mind&#xff0c;可以 /storage/emulated/0/字体/黑体.ttf 保存/storage/emulated/0/print/图片/input图纸/完整代码 给个文本内容”任务清单 调整语言顺序文不对题的…

opencv 区域提取

在OpenCV中&#xff0c;区域提取通常指的是从图像中选取一个特定的区域&#xff08;也称为感兴趣区域&#xff0c;ROI&#xff09;并进行操作或分析。你可以通过指定区域的坐标&#xff08;左上角和右下角的坐标&#xff09;来提取ROI。 以下是一个使用Python和OpenCV提取ROI的…

什么是知识中台?为什么企业需要知识中台?

如今市面上的企业数不胜数&#xff0c;企业的任何一个小细节都会产生很大的影响。近几年来一直很热门的知识中台备受企业关注。关于如何高效地管理、整合和运用知识&#xff0c;成为了每一家企业都在重点关注的问题。而知识中台&#xff0c;就是为了解决这一问题而诞生的一个全…

豪赌?远见?浙江东方的量子冒险

今年4月16日&#xff0c;量子通信概念异动&#xff0c;浙江东方&#xff08;600120&#xff09;拉升涨停。 量子和浙江东方&#xff0c;要把这两个词联系起来似乎并不太容易。 浙江东方&#xff0c;即浙江东方金融控股集团股份有限公司&#xff0c;系浙江省国资委下属浙江省国…

wbe口试高频题

1. 列举图像标签的常用属性及其含义。 图像标签 <img> 常用属性&#xff1a; src 图像路径&#xff08;必选&#xff09; alt 图像的替代文字 title 鼠标悬停提示文字 width 图像宽度 height 图像高度 2. 列举常用的行内元素和块元素并简述各自的显示特点。…

智能台灯系统之一些流行的调光方法

一些流行的调光方式&#xff0c;以下是一些例子&#xff1a; 1.前沿切相控制调光&#xff1a;这种调光方式采用可控硅电路&#xff0c;从交流相位0开始&#xff0c;输入电压斩波&#xff0c;直到可控硅导通时&#xff0c;才有电压输入。这种方式通过前沿导通和过零点自然关断的…