Java:String类(超详解!)
一.常用方法
🥏1.字符串构造
字符串构造有三种方法:
📌注意:
1. String是引用类型,内部并不存储字符串本身
如果String是一个引用那么s1和s3应该指向同一个内容,s1和s2是相等的,应该输出两个"hello world",但是如果不是一个引用应该还会再输出一个"hello world"
2. 在Java中""引起来的也是String类型对象。
🥏2.字符串的比较
1. "==" 比较
📌注意:
对于内置类型(基本数据类型),==比较的是变量中的值;
对于引用类型==比较的是引用中的地址。
在这张图中我们已经实现"=="的引用比较
而这时我们发现,s1 和 s2 的值是相等的,那么对于字符串来说我们是否能够按内容来比较呢?下面我们就来看一看吧!
2.equals()比较
📌比较方法:按照字典序比较:字符大小的顺序
我们发现我们的的确确的打印了"hello world"。
但是在之前我们其实也使用过equals方法去比较其他的对象,但是如果我们想要去比较内容,我们必须重写equals方法, 否则比较的结果就是不相等的。
但是为什么,我们并没有重写equals方法就去比较字符串,却能得到相等, 这是因为String默认重写了equals方法
3.compareTo()比较
📌比较方法:按照字典序比较
📌注意:与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。
- 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
- 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
4.compareToIgnoreCase()比较
这个方法和compareTo方法并没有什么区别,compareToIgnoreCase方法只是在compareTo方法的基础上忽略大小写。
🥏3.字符串查找
1.charAt(int index)方法
功能:
返回index位置上字符,如果index为负数或者越界,抛出 IndexOutOfBoundsException异常
2.indexOf()方法
📌indexOf(int ch)方法
功能: 返回ch第一次出现的位置,没有返回-1
📌indexOf(int ch, int fromIndex)方法
功能:从fromIndex位置开始找ch第一次出现的位置,没有返回-1
📌indexOf(String str)方法
功能:返回str第一次出现的位置,没有返回-1
📌indexOf(String str, int fromIndex)方法
功能:从fromIndex位置开始找str第一次出现的位置,没有返回-1
📌 lastIndexOf(int ch)方法
功能:从后往前找,返回ch第一次出现的位置,没有返回-1
📌 lastIndexOf(int ch, int fromIndex)
功能:从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返 回-1
📌 lastIndexOf(String str)
功能:从后往前找,返回str第一次出现的位置,没有返回-1
📌lastIndexOf(String str, int fromIndex
功能:从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1
🥏4.转化
1.数值和字符串转化
📌 数值转换成字符串
📌将字符串转换成数值
2.大小写转换
3.字符串转数组
📌字符串和字符数组转换
📌字符串和字节数组转换
4.格式化
🥏5. 字符串替换
1.replace
将oldChar字符替换成newChar字符
2.replaceFirst
将首个旧字符串替换成新字符串
3.replaceAll
将所有旧字符串替换成新字符串
注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串
🥏6.字符串拆分
我们利用split可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。
📌String[] split(String regex)
功能:将字符串全部拆分
📌String[] split(String regex, int limit)
功能:将字符串以指定的格式,拆分为limit组
注意事项:
1. 如果以字符"|","*","+"都得加上转义字符,前面加上"\\".
如果不使用转义字符就会发生错误
使用转义字符后
2. 而如果是"\",那么就得写成"\\\\".
对于"\",使用转义字符时需要用到"\\\":三个'\'
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.
🥏7.字符串截取
我们可以使substring方法从一个完整的字符串之中截取出一部分内容
1.substring(int beginIndex)方法
功能:从指定索引截取到结尾
2.substring(int beginIndex, int endIndex) 方法
功能:截取部分内容(左闭右开)
🥏8.删除字符串左右空白字符(空格, 换行, 制表符等)
1.trim()方法
🥏9. 字符串的不可变性
String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改,是因为:
1. String类在设计时就是不可改变的,String类实现描述中已经说明了
注意:String类中的字符实际保存在内部维护的value字符数组中(被final修饰)
我们现在看这段代码:arr数组同样被final修饰,但是我们还是能修改他的值,这就不符合他的不可变性了
那么这就代表了value被final修饰,表明value自身的值不能改变,即不能引用其它字符数组,但是其引用空间中的内容可以修改。
📌 所以说所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象
🥏10.字符串修改
如果我们想要在原字符串上进行添加我们该怎么办呢?来看下面的这段代码
我们发现成功的在原字符串上添加了字符串" world",但是这样的效率其实是非常低下我们应该尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象
那么我们该怎么办呢,这时就要用到我们的StringBuilder和StringBuffer。
二.StringBuilder和StringBuffer
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法。
如果大家想要了解更多可以去这里了解Overview (Java Platform SE 8 )
🥏1. append(String str)
这就是我们刚才要说的添加的方法,这个方法是用于在字符串的尾部添加,相当于刚才看到的‘+=’,下面就让我们来看一下他的使用吧
当然我们不是一定只能追加字符串我们还可以追加很多的类型:可以追加:boolean、char、char[]、 double、float、int、long、Object、String、StringBuff的变量 。
🥏2.insert(int offset, String str)
功能:在指定位置插入
他所插入的类型跟append方法是一样的: boolean、char、char[]、 double、float、int、long、Object、String、StringBuff的变量 。
🥏3.删除字符
📌deleteCharAt(int index)
功能:删除指定位置字符
📌delete(int start, int end)
功能:删除指定范围的字符(左闭右开)
🥏4.replace(int start, int end, String str)
功能: 见某位置到某位置的字符串替换(左闭右开)
🥏5.reverse()
功能: 反转字符串
除此之外还有一些需要注意的事项:
String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:
- String变为StringBuilder: 利用StringBuilder的构造方法或append()方法
- StringBuilder变为String: 调用toString()方法。
好了今天的内容就分享到这里了我们下一篇见! 记得点赞收藏加关注
相关文章:
Java:String类(超详解!)
一.常用方法 🥏1.字符串构造 字符串构造有三种方法: 📌注意: 1. String是引用类型,内部并不存储字符串本身 如果String是一个引用那么s1和s3应该指向同一个内容,s1和s2是相等的,应该输出两…...
【日志】力扣13.罗马数字转整数 || 解决泛型单例热加载失败问题
2024.10.28 【力扣刷题】 13. 罗马数字转整数 - 力扣(LeetCode)https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150这题用模拟的思想可以给相应的字母赋值,官方的答案用的是用一…...
Mybatis高级
系列文章目录 高级Mybatis,一些结果映射,引入新的注解 目录 系列文章目录 文章目录 一、结果映射 1.ResultType 2.ResultMap 基础应用: 二、一对一 嵌套结果和嵌套查询 嵌套结果 嵌套查询 区别 三、一对多 四、多对多 五、注解补充 1.一对一…...
【spark】spark structrued streaming读写kafka 使用kerberos认证
spark版本:2.4.0 官网 Spark --files使用总结 Spark --files理解 一、编写jar import org.apache.kafka.clients.CommonClientConfigs import org.apache.kafka.common.config.SaslConfigs import org.apache.spark.sql.SparkSession import org.apache.spark.sql.streaming.T…...
【脚本】B站视频AB复读
控制台输入如下代码,回车 const video document.getElementsByTagName("video")[0];//获取bpx-player-control-bottom-center容器,更改其布局方式const div document.getElementsByClassName("bpx-player-control-bottom-center")[0];div.sty…...
leetcode - 257. 二叉树的所有路径
257. 二叉树的所有路径 题目 解决 做法一:深度优先搜索 回溯 深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法。这种搜索方式会尽可能深地探索每个分支,直到无法继续深入为止,然后回溯到上…...
python 相关
python 1. pip 安装某个版本范围的软件 pip install “elasticsearch>6,<7” pip install elasticsearchX.Y.Z 2. pip 查看包版本 pip show pandas 3. pip 下载whl包 https://tendcode.com/subject/article/pip-offline-download/ (更多平台与架构)pip downl…...
静态分析2:控制流分析(构建CFG)
参考:南京大学《软件分析》课程2 1、控制流分析 控制流分析实际上指的是构建控制流图(Control Flow Graph,CFG)CFG是静态分析的基础数据结构CFG的节点可以是单个指令、基本块(Basic Block,BB)…...
Linux 应用领域
目录 服务器领域 桌面环境 软件开发 数据分析与科学计算 嵌入式系统 虚拟化和云计算 人工智能与机器学习 物联网(IoT) 网络安全 服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性…...
FPM383C指纹模块超详解 附驱动
0. 本人使用环境介绍 0.1 硬件环境 ESP32-C3FPM383C指纹模块一根破旧的usb数据线 0.2 软件环境 Clion2024.2.2ESP-IDF5.3.1Clion插件ESP-IDF 1. 硬件接口说明 1.1 UART UART 缺省波特率为 57.6Kbps,数据格式:8 位数据位,2 位停止位&am…...
若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 实现使用 Excel 文件批量导入 1.1 导入功能的前端具体实现 1.2 导入功能的后端具体实现 1.3 使用 EasyExcel 框架实现 Excel 读、写功能 1.4 将 Easy Excel 集成到…...
.rmallox勒索病毒肆虐:如何有效防范与应对
引言 在当今这个数字化时代,网络安全已成为一个不可忽视的重要议题。随着信息技术的飞速发展,网络空间的安全威胁也日益复杂多变。病毒、木马、勒索软件等恶意程序层出不穷,比如.rmallox勒索病毒。它们利用先进的技术手段,如代码…...
人工智能能否影响未来生活:一场深刻的社会与技术变革
随着人工智能技术的不断发展,我们已经目睹了它在各行各业掀起的巨大变革浪潮。从医疗行业的病例诊断、药物研发,到企业运营的数据分析、智能决策,再到日常生活中的智能语音助手、自动驾驶汽车、智能家居,人工智能正以前所未有的速…...
cmu 15-445学习笔记-3 存储引擎
03 Database Storage-Part Ⅰ 数据库存储上半部分 数据库分层划分结构图: Disk Manager:存储引擎,管理磁盘上的文件Bufferpool Manager:管理内存的缓存池Access Methods:访问方法Operator Execution:执行…...
[linux]和windows间传输命令scp 执行WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误解决
[linux]和windows间传输命令scp 执行WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误解决. 现象: 原因: 接收方服务器系统做了某些更改,导致登录时会报错。主要因为接收方服务器对登录过它的主机都会把该主机登录标识证书记录下来&a…...
C++ | Leetcode C++题解之第518题零钱兑换II
题目: 题解: class Solution { public:int change(int amount, vector<int>& coins) {vector<int> dp(amount 1), valid(amount 1);dp[0] 1;valid[0] 1;for (int& coin : coins) {for (int i coin; i < amount; i) {valid[…...
高并发-负载均衡
负载均衡在微服务架构中是一个重要的组成部分,旨在优化资源利用、提高服务可用性和确保系统的高可扩展性。以下是对微服务中的负载均衡的详细介绍,包括其原理、类型、实现方式以及相关的技术。 一、负载均衡的原理 负载均衡的基本原理是将进入系统的请…...
Docker 常用命令全解析:提升对雷池社区版的使用经验
Docker 常用命令解析 Docker 是一个开源的容器化平台,允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析,帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…...
基于 Postman 和 Elasticsearch 测试乐观锁的操作流程
鱼说,你看不到我眼中的泪,因为我在水中。水说,我能感觉到你的泪,因为你在我心中。 -村上春树 在分布式系统中,多个并发操作对同一资源的修改可能导致数据不一致。为了解决这种问题,Elasticsearch 提供了乐观…...
如何从PPT中导出600dpi的高清图
Step1. 修改PPT注册表 具体过程,参见如下链接:修改ppt注册表,导出高分辨率图片 Step2. 打开PPT,找到自己想要保存的图,选中图像,查看图像尺寸并记录 Step3. 重新新建一个PPT,并根据记录的图片…...
day01-ElasticStack+Kibana
ElasticStack-数据库 #官网https://www.elastic.co/cn/ #下载7.17版环境准备 主机名IP系统版本VMware版本elk110.0.0.91Ubuntu 22.04.417.5.1elk210.0.0.92Ubuntu 22.04.417.5.1elk310.0.0.93Ubuntu 22.04.417.5.1 单机部署ES 1.下载ES软件包,放到/usr/local下 […...
HTML 约束验证
HTML5引入了表单相关的一些新机制:它为<input>元素和约束验证增加了一些新的语义类型,使得客户端检查表单内容变得容易。基本上,通过设置一些新的属性,常用的约束条件可以无需 JavaScript 代码而检测到;对于更复…...
vue3项目开发一些必备的内容,该安装安装,该创建创建
重新整理了一下项目开发必备的一些操作,以后直接复制黏贴运行,随着项目开发,后期会陆续补充常用插件或组件等 如果你是还没有安装过的新人,建议从《通过安装Element UI/Plus来学习vue之如何创建项目、搭建vue脚手架、npm下载、封装…...
2D拓扑图
2D拓扑图主要指的是在二维平面上表示物体形状和关系的一种图形表示方法。 一、基本概念 2D网格拓扑结构:在二维平面上,由一系列的节点(node)和边(edge)组成。每个节点代表一个具体的位置或坐标点…...
大数据面试题整理——Hive
系列文章目录 大数据面试题专栏点击进入 文章目录 系列文章目录Hive 面试知识点全面解析一、函数相关(一)函数分类与特点(二)concat和concat_ws的区别 二、SQL 的书写和执行顺序(一)书写顺序(二…...
Python实现图像(边缘)锐化:梯度锐化、Roberts 算子、Laplace算子、Sobel算子的详细方法
目录 Python实现图像(边缘)锐化:梯度锐化、Roberts算子、Laplace算子、Sobel算子的详细方法引言一、图像锐化的基本原理1.1 什么是图像锐化?1.2 边缘检测的基本概念 二、常用的图像锐化算法2.1 梯度锐化2.1.1 实现步骤 2.2 Robert…...
【电机控制】相电流重构——单电阻采样方案
【电机控制】相电流重构——单电阻采样方案 文章目录 [TOC](文章目录) 前言一、基于单电阻采样电流重构技术原理分析1.1 单电阻采样原理图1.2 基本电压矢量与电流采样关系 二、非观测区2.1 扇区过渡区2.2 低压调制区 三、非观测区补偿——移相法四、参考文献总结 前言 使用工具…...
#基础算法
1 差分练习 1 模板题 代码实现: import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int num sc.nextInt();long[][] arr new long[n 2][m …...
如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?
在OA系统或者合同管理系统中,我们会经常遇到网页在线编辑Word文档形式的公文及合同的情况,并且需要上级对下级的公文进行批注等操作,或者不同部门的人需要签字审核,这就需要用到文档流转功能,如何用猿大师办公助手实现…...
Python中的列表是什么?它们有什么用途?
1、Python中的列表是什么?它们有什么用途? 在Python中,列表是一种有序的集合,可以包含不同类型的元素。列表可以存储一组值,并且可以方便地访问、修改和操作这些值。 列表的主要用途包括: 数据存储&…...
外网设计素材网站/制造企业网站建设
根据前面的文章,我们会发现我们会在很多类前面加很多XLua的标签,有LuaCallCSharp,CSharpCallLua,Hotfix 等等。关于这些配置的作用官方文档也有相应的说明:https://github.com/Tencent/xLua/blob/master/Assets/XLua/D…...
飞色网站商城怎么做/seo职位具体做什么
题目链接 https://www.luogu.org/problemnew/show/P2802 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上。 每次他能向上下左右四个方向移动一格(当然小H不可以静止不动), 但不能离开封锁线,否则就被打死了。 刚开始时他有…...
dw做的网站怎样做成手机版的/女教师遭网课入侵视频大全
CSS部分: 一、CSS优先级: !important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默 认属性同一级别。 二、盒子模型: IE盒子模型:width border padding 内容宽度 W3C标准盒子模型…...
免费做试用的网站/seo是什么意思呢
点击左上方蓝字关注我们 开放域问答(Open-domain QA)一直是自然语言处理领域的重要研究课题。百度从面向端到端问答的检索模型出发,提出了RocketQA训练方法,大幅提升了对偶式检索模型的效果,为实现端到端问答迈出了重要…...
深圳微信网站建设报价/网站建设与管理
版权声明: 专注于"GIS"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS"技术和行业解决方案;文章允许转载,但必须以链接方式注明源地址,…...
wordpress更新报错/日本疫情最新数据
电脑文件定时备份用什么方法好?现在是信息化的时代,公司员工处理工作时都需要使用电脑,而且很多人并没有文件备份的意识,这对数据安全是一个很大的隐患,因为电脑中的数据相当于企业的重要资产数据。 如果公司电脑里的重…...