走进Java:String字符串的基本使用

news2025/4/18 7:38:49

❀❀❀  大佬求个关注吧~祝您开心每一天  ❀❀❀

目录

一、什么是String

二、如何定义一个String

1. 用双引号定义

2. 通过构造函数定义

三、String中的一些常用方法

1 字符串比较

1.1 字符串使用 ==

1.2 字符串使用equals()

 1.3 使用 equalsIgnoreCase()

1.4 cpmpareTo和compareToIgnoreCase

2 字符串大小写转换 

 2.1 toUpperCase()

2.2 toLowerCase()

3  字符串长度获取

3.1 length()

4  判断是否包含一段字符串

4.1 contains()

5 字符串切割和拼接 

5.1 split()

5.2 join()

6 字符串寻找字串起始位置

6.1 indexOf()

6.2 lastIndexOf() 

7 获取字串

7.1 substring()

8 字符串替换 

8.1  replace()

8.2 replaceAll()


今天学习到了Java中的String,String是Java中一个非常重要的类,在我们做字符串操作的时候,需要使用到String。

一、什么是String

String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表示。

char str [] = {'a', 'b', 'c'};

在Java中,String像是一个很大的char数组,我们在定义字符串的时候,不需要再去像上方代码一样去定义,而是直接可以使用String去定义。

String str = "abc";

String就像是很大的char数组,但相比于char数组而言,String可以做字符串拼接操作,而char数组并不能直接去做字符串的拼接,如下代码。

String str = "abc" + "def";

二、如何定义一个String

既然知道String是一个类,那么类一定有他的初始化方法,在Java中,String的初始化有以下几种常用的方式。这是官方给出的一些介绍。

1. 用双引号定义

String字符串,可以直接通过双引号来定义,把需要的字符串内容用双引号包裹,可以直接对String类型的对象赋值。

public class StringDemo {
    public static void main(String[] args) {
        String str = "abc";
    }
}

2. 通过构造函数定义

String作为一个类,可以通过new关键字初始化,在Java中可以通过构造函数对String类型的对象赋值。

public class StringDemo {
    public static void main(String[] args) {
        String str = new String("abc");
        System.out.println(str);
    }
}

这是一种基本的构造字符串的方式,除此之外还有一些其他的构造方式。

通过无参构造函数初始化

这样的方式初始化的String的值为空,也就是什么都没有。

public String() {
        this.value = "".value;
        this.coder = "".coder;
    }

通过char数组进行初始化

String可以传入一个char数组进行初始化,String会拼接char数组当中的所有字符。

public String(char value[]) {
        this(value, 0, value.length, null);
    }

带位移的方式通过char数组进行初始化

这样的方式和上边的方式其实是一样的,只不过在初始化字符串的时候,会根据传入的offset作为char数组开始拼接的起始索引,并且拼接上count个字符。

public String(char value[], int offset, int count) {
        this(value, offset, count, rangeCheck(value, offset, count));
    }

除了以上几种常用的方式外,还有一些其他的方式,如通过int数组进行初始化,通过byte数组进行初始化,大家感兴趣的话可以自己研究一下。 

三、String中的一些常用方法

了解到什么是String,下面就要理解一些String中常用的方法。

1 字符串比较

字符串之间的比较又分为很多不同的方法,下边是一些常用的字符串比较方法。

1.1 字符串使用 ==

字符串使用 == 操作,其实是一个有坑的点,一般不用,这里不在多讲,有兴趣的可以尝试一下以下代码。

1.2 字符串使用equals()

字符串的比较,使用这个方法比较多一点。

 1.3 使用 equalsIgnoreCase()

这个方法相比于普通的equals方法的区别是,这个方法是忽略大小写的。

除此之外,字符串比较还有这两个方法。

1.4 cpmpareTo和compareToIgnoreCase

这两个方法和equals方法的区别是,equals返回的是boolean类型的变量,而compare方法返回的是int类型的变量。

具体比较方法如下:

  1. 两个字符串按照单个字符从前向后作比较,遇到不同的字符,返回两个字符的差值
  2. 如果两个字符比较完成了,没有发现不同的字符,返回两个字符串的长度差。

2 字符串大小写转换 

String中还提供了一些字符串大小写转换的方法。

 2.1 toUpperCase()

这个方法就是把字符串全部转换为大写。

2.2 toLowerCase()

这个方法把字符串全部转换为小写 

3  字符串长度获取

3.1 length()

字符串长度的获取通过以下方法获取。

4  判断是否包含一段字符串

4.1 contains()

String是有子字符串的概念的,比如我们要查看某个字符串中是否包含一小段的字符串,我们可以用以下方法。

5 字符串切割和拼接 

5.1 split()

字符串的切割和拼接是非常实用的方法,现在我们有这样的一个字符串。

String students = "zhangsan,lisi,wangwu,liuliu";

我们想要把这些姓名拆分出来,就需要用到下边的方法。

对于字符串切割,我们需要传入一个作为分割的字符,在上方的代码当中传入的是一个",",当然在具体应用的时候,还要根据具体的场景做分析。

5.2 join()

除了字符串分割外,当然也有字符串拼接的操作,如果我们想把studentArr中的学生姓名用横杠拼接起来,像这样

zhangsan-lisi-wangwu-liuliu

需要以下代码完成,这里只介绍基本的使用。

6 字符串寻找字串起始位置

我们可以判断字串是否存在,也可以获取子串在字符串的起始索引。

6.1 indexOf()

看下方代码,我们试图在字符串中寻找有没有值为"lisi"的字符串,我们调用indexOf方法就可以,

indexOf方法有两种,一种是直接传匹配字串,另外一种是传入匹配子串的同时传入开始匹配的起始下边,比如我们从索引10开始寻找,因为lisi的开始索引为9,当我们把开始匹配的下标放到10的时候,就没有办法在匹配到"lisi"了。

6.2 lastIndexOf() 

和indexOf()是一样的,不同的是,lastIndexOf()是判断的结尾,是从后往前找的。

7 获取字串

7.1 substring()

字串可以判断存不存在,可以获取起始下标,当然也可以获取子串。通过起始下标和结束下标来截取子串。

 

 

8 字符串替换 

  • replace:有两个重载形式,replace(char oldChar, char newChar)用于字符替换,replace(CharSequence target, CharSequence replacement) 可用于字符串替换。这里的CharSequence是字符串序列,简单理解就是字符串 ,该方法不会将参数解析为正则表达式。
  • replaceAll:方法签名为replaceAll(String regex, String replacement),参数regex要求是一个正则表达式字符串,它会按照正则表达式规则去匹配字符串中的子串并替换 。如果传入的不是正则表达式,也会当作普通字符串处理。
  • replaceFirst:方法签名为replaceFirst(String regex, String replacement) ,和replaceAll一样,第一个参数regex也是基于正则表达式的,不过它只替换第一次匹配到的子串。当传入非正则表达式的普通字符串时,也能进行字符串替换操作。

 

对于一些不想要的字符,也是可以替换的,拿上方的这个字符串来说。

String students = "zhangsan,lisi,wangwu,liuliu";

如果不想要逗号了,想要用横线分割,下方代码可以实现。

8.1  replace()

8.2 replaceAll()

与replace()不同的是,replaceAll()是可以传入正则表达式的,这里不在讲正则表达式,以下的方式也是可以替换的。

 

 以上就是一些常用的String的使用方法。

 

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

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

相关文章

python系列之元组(Tuple)

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 python系列之元组(Turple) 一、元组是什么?——给新手的…

破解验证码新利器:基于百度OCR与captcha-killer-modified插件的免费调用教程

破解验证码新利器:基于百度OCR与captcha-killer-modified插件的免费调用教程 引言 免责声明: 本文提供的信息仅供参考,不承担因操作产生的任何损失。读者需自行判断内容适用性,并遵守法律法规。作者不鼓励非法行为,保…

批量删除 PPT 中的所有图片、某张指定图片或者所有二维码图片

PPT 文档中的图片如何删除呢?相信很多小伙伴或碰到类似的需求。比如我们需要删除 PPT 文档中的某一张图片或者某张二维码图片,如果每一页都有这张图片,或者有很多 ppt 都有同一张要删除的图片,我们应该怎么快速的完成删除呢&#…

大模型开发(六):LoRA项目——新媒体评论智能分类与信息抽取系统

LoRA项目——新媒体评论智能分类与信息抽取系统 0 前言1 项目介绍1.1 项目功能1.2 技术原理1.3 软硬件环境1.4 项目结构 2 数据介绍与处理2.1 数据集介绍2.2 数据处理2.3 数据导入器 3 模型训练3.1 配置文件3.2 工具函数3.3 模型训练3.4 模型评估 4 模型推理 0 前言 微调里面&…

mysql-innodb存储引擎主键索引叶子结点数据结构(非单纯的双向链表)

我们应该清楚行记录是放在页中的。 compact行记录格式: 主要介绍几个比较重要的参数 heap_no: 页号 record_type: 0 表示普通类型(叶子结点),1表示B树的非叶子节点 ,2 表示最小记录&#xff…

物联网为什么用MQTT不用 HTTP 或 UDP?

先来两个代码对比,上传温度数据给服务器。 MQTT代码示例 // MQTT 客户端连接到 MQTT 服务器 mqttClient.connect("mqtt://broker.server.com:8883", clientId) // 订阅特定主题 mqttClient.subscribe("sensor/data", qos1) // …

Vmware中的centos7连接上网

有很多刚刚开始配置了centos7,然后发现不能上网现在来解决这个问题。 测试能不能上网 先还原这个设置,如果没有动过的话就不用,连接模式是NAT模式 然后进去设置网络环境,记得是用超级用户设置 vi /etc/sysconfig/network-script…

【AI知识】常见的优化器及其原理:梯度下降、动量梯度下降、AdaGrad、RMSProp、Adam、AdamW

常见的优化器 梯度下降(Gradient Descent, GD)局部最小值、全局最小值和鞍点凸函数和非凸函数动量梯度下降(Momentum)自适应学习率优化器AdaGrad(Adaptive Gradient Algorithm)​RMSProp(Root M…

线性规划的标准形式

标准形式的定义 目标函数:最大化线性目标函数 其中,x 是决策变量向量,c 是目标系数向量。 约束条件:等式形式约束 A x b, 其中,A 是约束系数矩阵,b 是常数项向量。 变量非负约束: 。 因此…

网络安全应急入门到实战

奇安信:95015网络安全应急响应分析报告(2022-2024年)官网可以下载 https://github.com/Bypass007/Emergency-Response-Notes 应急响应实战笔记 网络安全应急响应技术实战指南 .pdf 常见场景 第4章 勒索病毒网络安全应急响应 第5章 挖矿木…

应用程序安全趋势:左移安全、人工智能和开源恶意软件

软件是大多数行业业务运营的核心,这意味着应用程序安全从未如此重要。 随着组织采用云原生架构、微服务和开源组件,攻击面不断扩大。结果是:攻击者渴望利用的易受攻击和恶意依赖项数量不断增加。 2025 年,安全团队将面临日益复杂…

ospf动态路由

一、为什么使用动态路由 OSPF(open shortest path first开放最短路径优先)是内部网关协议(IGP)的一种,基于链路状态算法(LS)。 OSPF企业级路由协议(RFC2328 OSPFv2),核心重点协议 OSPF共三个版本,OSPFV1主要是实验室…

基于单片机控制的电动汽车双闭环调速系统(论文+源码)

2.1系统方案 在本次设计中,其系统整个框图如下图3.1所示,其主要的核心控制模块由电源供电模块,晶振电路,驱动电路模块,霍尔传感器,按键模块,复位电路,LCD液晶显示及直流电机等组成。…

【病毒分析】伪造微软官网+勒索加密+支付威胁,CTF中勒索病毒解密题目真实还原!

1.背景 该CTF挑战题目完整复现了黑客的攻击链路,攻击者通过伪造钓鱼页面引导受害者下载恶意软件。用户访问伪造的 Microsoft 365 官网后,在点击“Windows Installer (64-bit)”下载选项时,页面会自动跳转至伪造的 GitHub 项目链接&#xff0…

PDF Reader Pro for Mac v4.9.0 PDF编辑/批注/OCR/转换工具 支持M、Intel芯片

PDF Reader Pro 是一款用户必备的集管理、编辑、转换、阅读功能于一体的专业的全能PDF阅读专家。快速、易用、强大,让您出色完成 PDF 工作。 应用介绍 PDF Reader Pro,一款功能齐全且强大的PDF阅读和编辑软件。支持PDF阅读、批注、PDF编辑、PDF格式转换…

PowerShell 美化 增强教程

PowerShell Windows Terminal 美化 & 增强教程 Windows Terminal PowerShell 默认外观和功能较为基础,但通过 Oh My Posh 及其他增强工具,你可以打造一个更美观、更高效的终端环境。本教程提供完整的安装、美化和优化步骤,包括常见问题…

机械革命蛟龙16pro玩游戏闪屏

我查过原因,好像是AMD显卡对游戏用了可变刷新率就出bug了,可能是那个游戏不适合用可变刷新率技术。 解决办法: 1.桌面右键鼠标,出现如下标签,点击AMD Software:Adrenalin Edition 2.选择闪屏的游戏&#x…

实现图片多种处理需求的实用工具

在自媒体创作与日常办公时,图片处理常让人焦头烂额。今天就给大家介绍一款得力帮手——Fotosizer,它能帮你轻松批量处理图片,满足多样化需求。Fotosizer是一款功能强大的图片批量处理软件,无需安装,打开即用&#xff0…

数据结构中的引用管理对象体系

数据结构中的引用管理对象体系 (注:似复刻变量即实例对象) 引用管理对象的,有引用就能管理到它所指向的对象,我们拿引用最终的目的就是管理那些我们需要管理的最终直接对象,引用也是对象,同时…

Qwen2.5-VL 开源视觉大模型,模型体验、下载、推理、微调、部署实战

一、Qwen2.5-VL 简介 Qwen2.5-VL,Qwen 模型家族的旗舰视觉语言模型,比 Qwen2-VL 实现了巨大的飞跃。 欢迎访问 Qwen Chat (Qwen Chat)并选择 Qwen2.5-VL-72B-Instruct 进行体验。 1. 主要增强功能 1)直观地理解事物&…