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

news2024/9/22 3:43:48

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.coloradmin.cn/o/1707179.html

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

相关文章

第15章-超声波避障功能 HC-SR04超声波测距模块详解STM32超声波测距

这个是全网最详细的STM32项目教学视频。 第一篇在这里: 视频在这里 STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随 15.1-超声波测距 完成超声波测距功能、测量数据显示在OLED屏幕上 硬件介绍 使用&#…

OpenHarmony实战开发——宿舍全屋智能开发指南

项目说明 基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发宿舍全屋智能,实现碰一碰开门、碰一碰开灯、碰一碰开风扇以及烟感检测。因为各项目开发流程大体相似,本文主要以碰一碰开门为例介绍如何在现有OpenHar…

野外作战武器操作3D模拟实操仿真训练以便老兵能适应不同的训练需求

强国必须强军,我国在军事方面的投入持续加大,自然在军事武器培训方面不容忽视,在军事领域,3D模拟展示不仅提升了军事训练的效率,还为我们提供了更加直观、真实的武器体验。 首先,3D军事武器模拟展示能够提供…

Django革新者:突破传统,构建下一代Web应用

书接上文 —— 家园建筑师:用Django打造你的Web帝国,从前面的学习中,咱们我们经历了一个完整的Django Web开发之旅,涵盖了从基础概念到高级特性的各个方面: 引言:介绍了企业级Web框架的需求,并概…

分享个自用的 Nginx 加强 WordPress 防护的规则

Nginx WordPress 的组合是目前非常普及的组合了,我们完全可以借助 Nginx 规则来加强 WordPress 的防护,提高 WordPress 的安全性,今天明月就给大家分享个自用的 Nginx 针对 WordPress 的防护规则,部分规则大家只需要根据自己的需要…

ABB焊接功能介绍

1.基本配置 1.2配置Robot Ware Arc 2.焊接语句 2.1直线焊接语句 过渡点指令必须位于起弧指令与熄弧指令之间,不能单独使用。 2.2直线焊接示例 2.3圆弧焊接语句 2.4圆弧焊接示例 2.5摆动参数 关于ABB焊接机器人摆动参数设定 一般情况下,主要设置以…

[Linux]磁盘管理

一.Linux磁盘管理的原理 磁盘分区与Linux的目录是借助"挂载机制"链接的,将一个分区与一个目录连接起来。访问目录,相当于访问某块分区 lsblk命令: lsblk命令可以查看磁盘分区,以及每个分区所挂载的目录 lsblk -f 可以查看更细节的…

利用NewGIS平台将FME模板发布为接口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、模板编写 二、发布模板 三、接口获取 四、移动端调用 ​​​​​ 前言 在实际的应用生产过程中,尤其是移动端GIS软件的开发,针对一些闭…

win11中文文件名称乱码解决方案

解压后出现以下的乱码 解决方案 步骤1.winR 输入intl.cpl 或 windows 自带的搜索搜“intl.cpl”,打开这个面板控制项 步骤2.在新打开的区域面板中,选择“管理”标签页,点击下方的“更改系统区域设置”按钮 步骤3.取消"Beta版…"选…

Nginx的配置与调试

目录 1、安装Nginx 2、Nginx的配置文件结构 2.1 Nginx的全局配置 2.2 HTTP服务器配置 2.3 HttpGzip模块配置 2.4 负载均衡配置 2.5 server虚拟主机配置 2.6 location URL匹配配置 2.7 StubStatus模块配置 1、安装Nginx 在安装Nginx之前,需确保系统已经安装…

Day38 代码随想录打卡|二叉树篇---二叉树的最大深度

题目(leecode T104): 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 递归法: 递归法首先将根节点作为参数传入,随后每一轮传入当前节点的…

【openlayers系统学习】3.3假彩色图像合成(三个波段合成假彩色图像)

三、假彩色图像合成 在上一步中,我们使用 ol/source/GeoTIFF​ 源从单个多波段源(具有红色、绿色、蓝色和Alpha波段)渲染真彩色图像。在下面这个例子中,我们将从可见光谱之外提取数据,并使用它来呈现假彩色合成。 我…

Linux echo命令(在终端输出文本)

文章目录 Linux Echo命令深度解析简介命令语法常见选项- -n:不输出行尾的换行符,这意味着输出后不会换到下一行。- -e:启用反斜杠转义的解释,允许使用特殊字符。- -E:禁用反斜杠转义的解释(默认选项&#x…

简单得阴影引导实现

效果如下: 实现方式: 1、引入三方库: implementation io.github.razerdp:BasePopup:3.2.0 2、代码实现 class NewUserGuide3Popup : BasePopupWindow {constructor(activity: Activity) : super(activity)constructor(context: Context) : super(con…

如何开启tomcat管理功能

1 、修改conf/tomcat-users.xml <role rolename"manager-gui"/> <user username"tomcat" password"tomcat" roles"manager-gui"/>2、修改webapps/manager/META-INF/context.xml <Valve className"org.apache.cata…

动态规划part02 Day42

LC62不同路径 LC63不同路径II(超时10min) 超时原因分析&#xff1a;思路想错了&#xff0c;即便是正确思路初始化也有点问题&#xff0c;应该将不必要的判断逻辑引入初始化的过程中初始化&#xff1a; 从左上角到[i][0]和[0][j]都只有一条路径dp[i][0]1和dp[0][j]1引入故障&am…

Go 错误日志处理

是不是所有的 if err ! nil 的地方都应该输出错误日志&#xff1f; 打印过多的错误日志会导致日志文件变得冗长和难以阅读。 其次&#xff0c;重复的错误信息会增加冗余。 此外&#xff0c;每一层都打印错误日志&#xff0c;一旦错误信息设计不当&#xff0c;可能会导致上下…

【iOS】——GCD再学习

文章目录 一、GCD的定义二、GCD 任务和队列1.任务2.队列 三、GCD 的使用1.创建队列2.创建任务3.队列任务 组合方式并发队列 同步执行异步执行 并发队列同步执行 串行队列异步执行 串行队列同步执行 主队列在主线程中调用 同步执行 主队列在其它线程中调用 同步执行 主队…

大模型实战-动手实现单agent

文章目录 入口cli_main.py工具tools.pyprompt prompt_cn.pyLLM 推理 model_provider.py致谢 agent 的核心思想&#xff1a;不断调用 LLM&#xff08;多轮对话&#xff09;&#xff0c;让 LLM 按照指定的格式&#xff08;例如 json&#xff09;进行回复&#xff0c;提取 LLM 回复…

vue 区分多环境打包

需求&#xff1a;区分不同的环境&#xff08;测试、正式环境&#xff09;&#xff0c;接口文档地址不同&#xff1b; 配置步骤&#xff1a; 1、在根目录下面新建 .env.xxx 文件&#xff08;xxx 根据环境不同配置&#xff09; 文件中一定要配置的参数项为&#xff1a;NODE_ENV…