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,一经查实,立即删除!

相关文章

第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都有解析…

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

目前现状 无法客观、方便地掌握护林员的到位情况&#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% 排在第五名。 「非洲之王」传音手机表现十…

【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…

全球排名第一的免费开源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 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

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

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

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

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

地下18米的科技守护:旗晟综合管廊巡检机器人

近日&#xff0c;安徽某业主的地下18米深的地下管廊处&#xff0c;一种先进的巡检机器人正活跃在管廊轨道上&#xff0c;执行着重要的巡检任务&#xff0c;只见机器人在管廊轨道上平稳前行&#xff0c;它搭载着先进的检测设备&#xff0c;对地下管廊内的各种设施进行监测巡检&a…

java -- jar打包成exe -- 携带jre环境

java的项目一般都是以jar发布&#xff0c;很少打包为可执行程序&#xff0c;因此常见的打包方式也不多&#xff0c;且即使打包之后也需要jre环境才能运行&#xff0c;大部分打包都不会携带jre&#xff0c;需要手动添加jre。这里介绍几种我用过的打包方案。 exe4j(不推荐) jpac…

关于已配好java环境但双击无法打开jar包的解决方案

如果你已经装好了 java 环境直接跳到最后看解决方法即可 先说一下你安装的 java 环境&#xff0c;如果完全是默认选项安装&#xff0c;则会安装 jdk 和 jre&#xff0c;并且在安装 jre 时还需要安装目录下为空&#xff0c;其实 jre 的安装是多余的&#xff0c;因为安装的 jdk 里…

Teamcenter 查询包含Assembly的ItemRevision

问题描述 需要得到所有包含Assembly的ItemRevision。 TC OOTB的查询方式没有可用的&#xff0c;需要在Query Builder中进行自定义。 进一步分析&#xff0c;如果ItemRevision包含Assembly&#xff0c;其必定包含BOMViewRevision。 解决方案 自定义如下查下。 注意&#xff1…

vue 微信公众号定时发送模版消息

目录 第一步&#xff1a;公众号设置 网页授权第二步&#xff1a;引导用户去授权页面并获取code第三步&#xff1a;通过code换取网页授权access_token&openid第四步&#xff1a;后端处理绑定用户和发送消息 相关文档链接&#xff1a; 1、微信开发文档 2、订阅号/服务号/企业…

英语四级翻译练习笔记③——大学英语四级考试2023年12月真题(第三套)

目录 引言&#xff08;必看&#xff09; 四级翻译评分标准分析及真题解析 四级翻译评分标准 四级翻译真题 学生作答 1. 评分 2. 修正翻译中的错误 错误标记&#xff1a; 3. 改正句子 4. 标出错误单词 5. 标准答案 6. 常考万能句子 7.重点单词的中文意思 引言&…

远程抄表及预付费管理系统:智能管理的新篇章

1.系统简述 远程抄表及预付费管理系统是现代能源管理方面的一项重要自主创新&#xff0c;它将传统手动式抄水表方式转变为自动化技术、智能化管理模式&#xff0c;大大提高了高效率并减少了经营成本。该系统搭载了前沿的通讯技术、数据分析技术和财务管理系统核心理念&#xf…

RedHat9 | DNS剖析-配置转发DNS服务器

一、实验环境 1、转发DNS服务器 转发服务器&#xff08;Forwarding Server&#xff09;接受查询请求&#xff0c;但不直接提供DNS解析&#xff0c;而是将所有查询请求发送到另外一台DNS服务器&#xff0c;查询到结果后保存在本地缓存中。如果没有指定转发服务器&#xff0c;D…

性能测试(一)—— 性能测试理论+jmeter的使用

1.性能测试介绍 定义&#xff1a;软件的性能是软件的一种非功能特性&#xff0c;它关注的不是软件是否能够完成特定的功能&#xff0c;而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性&#xff0c;所以一般来说性能测试介入的时机是在功能测试完…