Java中常用的工具类——字符串类

news2025/2/12 14:03:26

提示:字符串类是编程中最常用的一种数据类型,比较重要❗

文章目录

  • 前言
  • 一、字符串类创建对象方式
    • 静态创建
    • 动态创建
  • 二、String字符串内容不可改变
  • 三、字符串常用方法
    • length方法
    • charAt方法
    • substring方法
    • indexOf与lastIndexOf
      • indexOf方法
      • lastIndexOf方法
    • 替换字符串或字符
      • replace方法
      • replaceAll方法
    • 比较字符串内容
      • equals方法
      • equalsIgnoreCase方法
    • 大小写转换
      • toUpperCase方法
      • toLowerCase方法
    • 前缀和后缀


前言

提示:这里可以添加本文要记录的大概内容:

  • Java中的字符串类是java.lang.String。它提供了许多方法来处理字符串,例如截取、拼接、替换、比较等等。
  • 字符串类是不可变的,这意味着一旦创建了一个字符串对象,就不能更改字符串的内容。如果需要更改字符串,必须创建一个新的字符串对象。
  • Java中的字符串是 Unicode 字符序列,可以包含任何字符,包括汉字和特殊字符。
  • 字符串可以通过使用单引号或双引号来创建。使用双引号创建的字符串可以包含空格和特殊字符,使用单引号创建的字符串只能包含一个字符。
  • Java中有许多其他类也可以处理字符串,例如StringBuffer和StringBuilder。这些类提供了更多的方法来修改字符串,但是它们不是线程安全的,所以在多线程环境中使用时要小心。

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、字符串类创建对象方式

静态创建

  1. 静态创建:直接使用"字符串内容"

静态方式创建的字符串对象,存储在字符串常量池中

相同内容的字符串对象在常量池中只会创建一个对象
原因:尽可能节省内存空间

public static void main(String[] args) {
	String s1 = "汤姆要";
	String s2 = "汤姆要";
	System.out.println(s1==s2);
}

在这里插入图片描述

动态创建

  1. 动态创建:使用new构造方法

动态方式创建的字符串存储在堆区
每创建一个都要占据一个新空间

public static void main(String[] args) {
	String s1 = new String("抓杰瑞");
	String s2 = new String("抓杰瑞");		
	System.out.println(s1==s2);
}

二、String字符串内容不可改变

String 字符串对象创建后内容不能改变
一旦改变时间上产生一个新的字符串

public static void main(String[] args) {
	String s1 = "汤姆要";
	String s2 = "抓杰瑞";
	s1 = s1+s2;
	System.out.println(s1);	
}

在这里插入图片描述

三、字符串常用方法

length方法

返回一个字符串长度

在Java中,字符串类中的 length() 方法返回字符串的长度。它返回一个 int 值,表示字符串中字符的数量。

例如,下面的代码返回字符串 “Hello, World!” 的长度:

public static void main(String[] args) {
	String str = "Hello, World!"; 
	System.out.println(str.length());  // 13
}

在这个例子中,字符串 str 的长度是 13,因为它包含 13 个字符(包括空格和标点符号)。

需要注意的是,length() 方法返回的是字符串的长度,而不是容量。字符串的容量是指底层字符数组大小,而长度是指字符串中实际字符的数量。

charAt方法

获取指定下标位置的字符,下标从0开始

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

substring方法

获取指定下标范围的子串

public static void main(String[] args) {
	String str = "hello world";
	//substring(int beginIndex,int endIndex) 包括开始,不包括结束
	System.out.println(str.substring(1,6));  //ello 
	//从下标为1的位置开始截取,一直到下标为6的位置(不包含6)
	
	System.out.println(str.substring(6));  //world
	//substring(int beginIndex) 从开始到结束
}

indexOf与lastIndexOf

在Java中,indexOf和lastIndexOf方法可以用来搜索字符串中指定字符或子字符串的位置,它们的用法如下:

indexOf:获取某个指定字符或字符串第一次出现的下标位置
lastIndexOf:获取某个指定字符或字符串最后一次出现的下标位置

indexOf方法

获取某个指定字符或字符串第一次出现的下标位置

如果搜索到指定的字符或子字符串,则返回该字符或子字符串所在位置的下标值
返回值为-1,则代表此字符或字符串没有出现

public static void main(String[] args) {
	String str = "hello world";
	System.out.println(str.indexOf('y'));  //单个字符''
	//输出-1
}

调用indexOf方法中结果为-1表示未查询到指定的字符或字符串。

搜索指定字符

public static void main(String[] args) {
	String str = "hello world";
	System.out.println(str.indexOf('h'));  //单个字符''
	//输出0
}

搜索指定字符串

public static void main(String[] args) {
	String str = "hello world";
	System.out.println(str.indexOf("world")); //"字符串"
	//输出6
}

在以上示例中,调用indexOf方法分别搜索字符’h’和字符串"world"在原始字符串中第一次出现的位置,最终返回结果为0和6

lastIndexOf方法

lastIndexOf方法与indexOf方法类似,不同的是它是获取某个指定字符或字符串最后一次出现的下标位置

public static void main(String[] args) {
	String str = "hello world";	
	System.out.println(str.lastIndexOf('o')); //搜索指定字符
	System.out.println(str.lastIndexOf("wor")); //搜索指定字符串
}

在以上示例中,调用lastIndexOf方法分别搜索字符’o’和字符串"wor"在原始字符串中最后一次出现的位置,最终返回结果为7和6

替换字符串或字符

在Java中,有多种方法可以替换字符串或字符,这里介绍其中两种比较常见的方式:

他并不是真的替换了,而是返回了新的串,因为字符串不可改变

replace(char a,char b)将字符串中出现的a替换成b
replaceAll(String a,String b)将字符串中出现的a替换成字符串b

replace方法

replace方法用于替换字符串中的指定字符或字符串,它有两个参数,第一个参数为要被替换的字符或字符串,第二个参数为替换后的新字符或新字符串。

方法签名如下:

public static void main(String[] args) {
	String str = "hello world";	
	//替换指定字符,将字符串中的所有'o'字符替换成'*'字符
	System.out.println(str.replace('o', '*')); 
	//替换指定字符串,将字符串中的"world"字符串替换成"Java"字符
	System.out.println(str.replaceAll("world", "Java")); 
}

在以上示例中,调用replace方法分别替换字符串中的’o’字符和"world"字符串,返回替换后的新字符串

replaceAll方法

replaceAll方法用于替换字符串中的匹配正则表达式的部分,它有两个参数,第一个参数为要被替换部分的正则表达式,第二个参数为替换后的新字符串。

例如:

String str = "123 abc 456 def";
String newStr = str.replaceAll("\\d+", "X"); //将字符串中所有的数字都替换成'X'字符

System.out.println(newStr); //输出X abc X def

在以上示例中,调用replaceAll方法使用正则表达式"\d+"匹配字符串中所有的数字,将其替换成'X'字符,输出替换后的新字符串。

比较字符串内容

equals方法,是严格区分大小写的比较
equalsIgnoreCase 方法,不区分大小写比较

实际应用中比较字符串内容是否相等,必须使用equals

在Java中比较字符串内容的常用方法有以下几种:

equals方法

equals方法是String类中用来比较字符串内容是否相同的方法,它比较字符串对象中的字符序列是否相等。
如果相等,返回true;否则返回false。

例如:

String str1 = "hello";
String str2 = "hello";
String str3 = "Hello";

System.out.println(str1.equals(str2)); //输出true
System.out.println(str1.equals(str3)); //输出false

在以上示例中,使用equals方法比较两个字符串对象的内容,结果str1和str2内容相同,返回true;而str1和str3内容不同,返回false。

equalsIgnoreCase方法

equalsIgnoreCase方法和equals方法相似,唯一不同的是它忽略字符大小写。
如果忽略大小写后两个字符串内容相等,返回true;否则返回false。

例如:

String str1 = "hello";
String str2 = "HELLO";

System.out.println(str1.equalsIgnoreCase(str2)); //输出true

在以上示例中,使用equalsIgnoreCase方法比较两个字符串对象的内容,忽略了字符大小写,结果返回true。

大小写转换

toUpperCase 将小写字母转换成大写

toLowerCase 将大写字母转换成小写

在Java中,可以使用以下方法将字符串中的字符转换为大写或小写:

toUpperCase方法

toUpperCase方法是String类中的方法,用于将字符串中的所有小写字母转换成大写字母。方法返回一个新的字符串对象,原始字符串不发生改变。

例如:

public static void main(String[] args) {
	String str = "hello world";
	System.out.println(str.toUpperCase()); //输出"HELLO WORLD"
}

在以上示例中,使用toUpperCase方法将字符串str中的所有小写字母转换为大写字母,并将结果保存在一个新的字符串对象中。

toLowerCase方法

toLowerCase方法是String类中的方法,用于将字符串中的所有大写字母转换成小写字母。方法返回一个新的字符串对象,原始字符串不发生改变。

例如:

public static void main(String[] args) {
	String str = "HELLO WORLD";
	System.out.println(str.toLowerCase()); //输出"hello world"
}

在以上示例中,使用toLowerCase方法将字符串str中的所有大写字母转换为小写字母,并将结果保存在一个新的字符串对象中。

前缀和后缀

startsWith:判断字符串是否以指定的字符串开头

endsWith:判断字符串是否以指定的字符串结尾

Java字符串中的前缀和后缀是指字符串开头和结尾的部分。
可以使用String类的startsWith()方法来判断一个字符串是否以指定的前缀开始,使用endsWith()方法来判断一个字符串是否以指定的后缀结束

例如:

public static void main(String[] args) {
	String str = "Hello, World!";
    System.out.println(str.startsWith("World!")); //false
    System.out.println(str.endsWith("World!")); //true
}

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

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

相关文章

企业即时通信软件有哪些?要如何选择?

随着企业数字化转型的加速,即时通信软件已成为企业日常沟通的重要工具。但是市面上的企业即时通信软件种类繁多,如何选择适合自己企业的即时通信软件呢?本文将为大家介绍几款常用的企业即时通信软件以及如何选择。 企业微信 企业微信是腾讯公…

牛逼!Windows竟然也能运行QEMU虚拟机!

这些天研究 Miracast,又倒腾了开发用的虚拟机,但是发现了新的东西就是 QEMU ——全宇宙最强的硬件模拟器,原来这玩意可以在Windows上跑虚拟机的。 环境部署 msys2mingw-w64-qemu系统isoHyper-V 代替 KVM/Linux 安装 在 Msys2 Repo下载exe…

【服务器数据恢复】RAID5重建导致数据丢失的数据恢复案例

服务器数据恢复环境: HP某型号服务器,5块硬盘组建了一组raid5磁盘阵列。 服务器故障&分析: 服务器在工作过程中,raid5磁盘阵列中的一块磁盘掉线,由于raid5的容错特点,raid阵列未受影响,工作…

弥合风险缺口 筑牢共享安全|2023开放原子全球开源峰会开源安全技术与实践分论坛成功举办

6 月 12 日,2023 开放原子全球开源峰会开源安全技术与实践分论坛成功举办。本场论坛围绕开源软件供应链、开源漏洞信息共享机制、开源安全测试工具、人工智能新技术对开源安全领域的影响等方向分享了技术和最佳实践,讨论了开源安全领域最新产业动态。 开…

认知升维: 道、法、术、器、势

身处在严重内卷的时代,我们各方面面临转型调整,提升认知,更好适应说变就变|比翻书变脸还快的节奏,需要自身不断精进,不断挑战自我,这个世界上:一切都在变,唯独不变的是变化本身&…

enscape3.5新版本更新,神仙功能还不少

Enscape于2015年首次发布,已成为建筑可视化市场的关键工具之一,在上一次CGarchitect渲染调查中名列前十。 图片来源于CGarchitect渲染调查报告 相对于同行的其他渲染器,Enscape最大的优势在于它并未因为其易于使用特性而降低了品质&#xff…

一篇文章搞定《CoordinatorLayout完成电商首页》

一篇文章搞定《CoordinatorLayout完成电商首页》 前言NestedScrollNestedScrollingParentNestedScrollingChildNestedScrollingChildHelper 和 NestedScrollingParentHelper CoordinatorLayoutCoordinatorLayout知识点讲解实现后续功能 通过自定义Behavior实现Fling效果认识Beh…

操作系统课程设计 模拟FAT文件系统的设计与实现

一、 目的与要求 1.研究FAT文件系统的物理布局。 2.掌握FAT文件系统中目录的结构与目录项定义。 3.掌握文件操作如建立目录,建立文件,删除文件,复制文件时,对FAT和目录的操作步骤。 4.合理设计文件系统布局与数据结构&#xff08…

Day_49归并排序

目录 一. 归并排序的思想 1.归并排序的过程 2. 两种实现方式: 2.1 非递归实现方式 2.2递归实现方式 二. 归并排序的代码实现 1. 数组的辅助空间及初始化 2. 核心代码 2.1每个小组的基本设置 2.2小组内部的排序 三. 代码展示 四. 运行结果 五. 总结 一. 归并排序…

Android逆向环境搭建

逆向工具 手机root Android逆向必要条件是你需要有个Root的手机,最好是真机。没有root的手机,逆向工作很难继续下去,手机的话,能解锁OEM的都可以。手机Root的话一般有以下几步: 解锁OEM解锁BootLoader安装Magisk制作…

Win11的两个实用技巧系列之夜间模式怎么定时、如何卸载重装应用商店?

Win11如何卸载重装应用商店? Win11删除重装Microsoft Store的命令 Win11如何卸载重装应用商店?Win11中的应用商店想要卸了重装,该怎么操作呢?下面我们就来看看Win11删除重装Microsoft Store的命令 Microsoft Store也就是微软的应用商店&…

Redis的主从复制和哨兵机制详解

目录 一、CAP 原理二、Redis主从同步1、主从同步是什么能干嘛?2、Redis是如何实现数据同步的?2.1.增量同步2.2.快照同步2.3.无盘复制2.4.通过Wait 指令保证强一致性 3、搭建Redis 1主2从3.1.安装Redis3.2.创建1主2从配置文件3.3.启动Redis3.4.验证主从同…

算法分析和大O简介

在本文中,我们将讨论如何分析算法以及为什么这样做很重要! 为什么要分析算法? 在我们开始之前,让我们澄清一下什么是算法。在本文中,算法只是解决问题的过程或公式。有些问题非常有名,以至于算法都有名字…

JMeter参数化4种实现方式

目录 前言: 1 参数化释义 2 参数化实现 CSV实例 注意事项 前言: 在使用JMeter进行测试时,参数化允许您模拟不同的用户、不同的数据、不同的操作等,从而增加了测试的灵活性和复用性 1 参数化释义 什么是参数化?…

软件系统开发包括哪些步骤?

在传统的理解中,企业内数字化应用的开发和迭代应该是 IT 部门的工作,但事实并非如此。一方面,激烈的市场竞争和反复出现的疫情给数字化提出了新的要求;另一方面,五花八门的零代码、低代码工具正如雨后春笋一般出现&…

NB-lot和LoRa真正的差别在哪里?

就像要把大象装冰箱一样,物联网,万物互联也是要分步骤的。 一、感知层(信息获取层),即利用各种传感器等设备随时随地获取物体的信息; 二、网络层(信息传输层),通过各种电信网络与互联网的融合,将物体的信息实时准确地…

[AI语音克隆] 5秒内克隆您的声音并生成任意语音内容

前言 随着人工智能技术的不断发展,语音克隆技术也得到了越来越多的关注和研究。目前,AI语音克隆技术已经可以实现让机器模拟出一个人的声音,甚至可以让机器模拟出一个人的语言习惯和表情。 然而,AI语音克隆技术仍然面临着许多难…

BB84协议:量子秘钥分发

文章目录 为什么需要量子密钥分发通讯工具基本通讯 BB84协议为什么这样做能防止通讯被窃听?在传统信道上的窃听在量子信道上的窃听 内容来源: 为什么需要量子密钥分发 BB84协议是一种“密钥分发协议”,所以从功能上来讲,它要实现的目标与之…

618大促 | 解析平台、商家和消费者必须面对的三大风险

目录 618年中大促的三大风险 商家乐此不疲的“刷单炒信” 消费者无计可施的“薅羊毛” 平台恨之入骨的“恶意爬虫” 618三类欺诈风险的特点 618电商平台的业务安全防控之道 618大促再次开启,各平台及商家的促销大战如火如荼。 2023年618,京东推出…

【状态估计】用于非标量系统估计的最优卡尔曼滤波(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…