Java中的字符串类

news2025/1/12 15:46:12

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

文章目录

  • 前言
  • 一、字符串类创建对象方式
    • 静态创建
    • 动态创建
  • 二、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/732853.html

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

相关文章

计算机基础--->数据结构(9)【并查集】

文章目录 并查集的概述并查集的主要用途并查集的实现创建和初始化集合查找当前元素的集合根节点判断两个元素是否处于同一集合合并两个集合对节点的路径进行压缩 并查集的概述 并查集是一种用于解决集合合并和查询问题的数据结构,主要用于实现有关集合的操作&#x…

Skywalking高级使用

Skywalking高级使用 RPC调用监控Mysql调用监控Skywalking常用插件获取追踪ID过滤指定的端点告警功能Skywalking原理Open Tracing介绍 RPC调用监控 Skywalking(6.5.0)支持的RPC框架有以下几种: (1) Dubbo 2.5.4 -> 2.6.0 (2) Dubbox 2.8.4 (3) Apache Dubbo 2.7.…

动态规划 DP (六) 字符串编辑

1.字符串编辑 字符串编辑问题是一类常见的问题,通常涉及对字符串进行插入、删除、替换等操作,以达到某种特定的目标。 常见的字符串编辑问题包括: 编辑距离(Edit Distance):给定两个字符串,通…

最新抖音娱乐测评小程序源码 Thinkphp后端 抖音引流小程序

最新抖音娱乐测评小程序源码 thinkphp后端 抖音引流小程序 附搭建教程 测试环境 NginxPHP7.0MySQL5.6 网站运行目录设置为 /web 数据库配置文件 \source\application\database.php 后台登录地址 http://你的域名/index.php?s/admin/passport/login

python环境

卸载旧环境 wini 打开应用卸载 删除python解释器和pycharm 删除配置文件夹JetBrains C:\Users\CJC\AppData\Roaming\JetBrains 安装 安装python解释器 安装pycharm 查看或设置该项目的解释器和安装包 快捷键 全局搜索 双击shift 当前文件中搜索 ctrl f 查看函数…

MySQL数据库对象与数据备份和还原详解

目录 一、视图 1. 什么是视图 2. 视图与数据表的区别 3. 视图的优点 4. 创建视图 二、索引 1. 什么是索引 2. 为什么要使用索引 3. 索引优缺点 4. 何时不使用索引 5. 索引何时失效 6. 索引分类 6.1 普通索引 6.2 唯一索引 6.3 主键索引 6.4 组合索引 三、数据的…

RabbitMQ系列(25)--RabbitMQ搭建镜像队列

前言:如果RabbitMQ集群中只有一个Broker节点,那么该节点的失效将导致整体服务的临时性不可用,并且也可能会导致消息的丢失,虽然可以将所有消息都设置为持久化,并且对应队列的durable属性也设置为true,这样可以保证消息…

mysql 常用命令综合简单运用

目录 第一大题创建数据库创建用户表及约束字段修改位置修改字段数据类型修改字段名字添加字段修改表名字删除字段修改表的存储引擎 第二大题创建表及外键和其他约束删除外键约束和查找外键名 第三大题创建数据库创建用户同时授权一些功能修改用户的密码更新权限列表查看用户的权…

pytorch线性模型 学习前要学习的基础知识

跟着刘二大人学pytorch,补全一下我的基础缺失 1.numpy基础 import numpy as np from PIL import Image anp.array([1,2,3]) #生成一维数组 print(a) bnp.arange(1,4)#创建等差数组,默认等差是1,数组为1,2,3&#xff0…

spring 详解三 IOC(spring实例化及后处理器)

Spring实例化基本流程 Spring在容器初始化的时候,读取XMl配置,将其封装成BeanDefinition(Bean定义)对象,描述所有bean的信息 BeanDefinition会注册存储到beanDefinitionMap集合中 Spring框架遍历beanDefinitionMap,使用反射创建Be…

pycharm如何给一串中文快捷加引号(方法二)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 商人重利轻别离,前月浮梁买茶去。 大家好,我是皮皮。 一、前言 前几天在Python白银群【此类生物】问了一个Pycharm基础的问题&a…

SpringBoot配置动态定时任务

1.配置ScheduledTask 主要是实现SchedulingConfigurer,动态传入cron。 package com.hzl.boot.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Propert…

使用promise函数封装post请求,封装aes加解密方法,并进行请求头aes加密,封装sm2国密加解密,进行请求体数据加密,响应数据解密。

export default {async post(url, params { header:{}, data:{} }, showLoading true){if(showLoading){uni.showLoading({title:"加载中",mask:true})}let options{header:{...params.header},url:globalParams.basepathurl.url,data:{...params.data}}//渠道 ae…

Devops系列五(CI篇之pipeline libraray)jenkins将gitlab helm yaml和argocd 串联,自动部署到K8S

一、说在前面的话 本文是CI篇的上文,因为上一篇已经作了总体设计,就不再赘述,有需要的请看前文。 我们将演示,使用CI工具–jenkins,怎么和CD工具–argocd串联,重点是在Jenkins该怎么做。准备工作和argocd等…

C++常用库函数 5.输入和输出函数

函数名&#xff1a;fclose 函数原型&#xff1a;int fclose(FILE *stream)&#xff1b; 参数&#xff1a;streamFILE 结构的指针。 所需头文件&#xff1a;<cstdio> 返回值&#xff1a;如果该流成功关闭&#xff0c;fclose 返回0。如果出错&#xff0c;则返回 EOF。 功…

AI在金融领域的应用

AI金融领域 信贷业务 个人信贷单笔数额小、数量大&#xff0c;需要大量的人力和时间投入&#xff0c;信贷审核的数据也呈现出分散化、碎片化的特点。同时传统金融机构和互联网金融公司的风控环节中&#xff0c;普遍存在信息不对称、成本高、时效性差、效率低等问题&#xff0c…

动态规划之343 整数拆分(第6道)

题目&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例&#xff1a; 解法&#xff1a; 其实可以从1开始遍历 j &#xff0c;然后有两种…

Mysql之视图,索引,备份与恢复

目录 一&#xff0c;视图 1.视图是什么&#xff1f; 2.视图的重要性&#xff1f; 3.那些地方使用视图&#xff1f; 4.基本语法 二&#xff0c;索引 1.索引是什么&#xff1f; 2.索引的重要性&#xff1f; 3.索引的种类&#xff1a; 4.那些地方使用索引&#xff1f; 5.…

Gateway服务集成Nacos2021.0.4错误解决

问题 gateway服务集成nacos&#xff0c;启动后报错&#xff1a; Caused by: com.alibaba.nacos.shaded.io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information:; 版本&#xff1a; jdk:1.8 spring-b…

10_Linux中断

目录 Linux中断API函数 中断号 上半部与下半部 软中断 tasklet 工作队列 设备树中断信息节点 获取中断号 修改设备树文件 按键中断驱动程序编写 编写测试APP Linux中断API函数 先来回顾一下裸机实验里面中断的处理方法: 1.使能中断,初始化相应的寄存器。 2.注册中…