Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner
个人简介
👀个人主页: 前端杂货铺
⚡开源项目: rich-vue3 (基于 Vue3 + TS + Pinia + Element Plus + Spring全家桶 + MySQL)
🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍖开源 rich-vue3 🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧
| 内容 | 参考链接 |
|---|---|
| Java基础(一) | Hello World,8种数据类型,键盘录入 |
| Java基础(二) | 数组,方法,方法重载 |
| Java基础(三) | 类和对象、构造方法 |
文章目录
- 前言
- String 字符串
- StringBuffer
- StringBuilder
- StringJoiner
- 总结
前言
大家好,这里是前端杂货铺。
本篇文章,我们认识字符串。
String 字符串
通过 new 创建的都是存储在堆内存中,所以 s1 和 s2 的地址并不相同,故不相等。
通过 equals 方法,我们可以只比较值而不比较地址;通过 equalsIgnoreCase 方法,我们可以忽略字符串大小写比较值。
public static void main(String[] args) {String s1 = new String("Abc");String s2 = "Abc";// 基本数据类型,比较数据值// 引用数据类型,比较地址值System.out.println(s1 == s2); // false// 比较对象的内容是否相等System.out.println(s1.equals(s2)); // false// 比较对象的内容是否相等,忽略大小写System.out.println(s1.equalsIgnoreCase(s2)); // true
}

StringBuffer
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
但是在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
| 方法 | 描述 |
|---|---|
| append(String s) | 将指定的字符串追加到此字符序列 |
| insert(int offset, String str) | 将字符串插入此序列中 |
| delete(int start, int end) | 移除此序列的子字符串中的字符 |
| replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符 |
| reverse() | 将此字符序列用其反转形式取代 |
StringBuffer sBuffer = new StringBuffer("hello");
sBuffer.append(" ");
sBuffer.append("world");
sBuffer.append("!");System.out.println(sBuffer);sBuffer.insert(5, "Java");
System.out.println(sBuffer); // helloJava world!sBuffer.delete(7, 9);
System.out.println(sBuffer); // helloJa world!sBuffer.replace(5, 7, "ab");
System.out.println(sBuffer); // helloab world!sBuffer.reverse();
System.out.println(sBuffer); // !dlrow baollehSystem.out.println(sBuffer.length()); // 14

StringBuilder
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
| 方法 | 描述 |
|---|---|
| append(String s) | 将指定的字符串追加到此字符序列 |
| insert(int offset, String str) | 将字符串插入此序列中 |
| delete(int start, int end) | 移除此序列的子字符串中的字符 |
| replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符 |
| reverse() | 将此字符序列用其反转形式取代 |
StringBuilder sb = new StringBuilder("hello");sb.append(" ").append("world").append("!");
System.out.println(sb); // hello world!sb.insert(5, "Java");
System.out.println(sb); // helloJava world!sb.delete(7, 9);
System.out.println(sb); // helloJa world!sb.replace(5, 7, "ab");
System.out.println(sb); // helloab world!sb.reverse();
System.out.println(sb); // !dlrow baollehSystem.out.println(sb.length()); // 14

StringJoiner
JDK8 出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。
StringJoiner sj = new StringJoiner("---");
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj);StringJoiner sj2 = new StringJoiner(", ", "[", "]");
sj2.add("aaa").add("bbb").add("ccc");
int len = sj2.length();
System.out.println(len);
System.out.println(sj2);// 转为字符串
String str = sj2.toString();
System.out.println(str);

总结
本篇文章,我们学习了字符串地址和值的比较、StringBuffer、StringBuilder、StringJoiner,认识了其各自的作用及StringBuffer 与 StringBuilder 的区别等…
好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!
参考资料:
- Java 基础(bilibili-黑马程序员)
- 菜鸟教程–Java

相关文章:
Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner
个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 …...
吐血推荐!3款视频生成工具,全部国产,都免费
AI视频大模型的爆发,让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 : 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型,具备强大的视频创作能力&a…...
【Web3】Web3.js 启动!并解决Web3 is not a constructor报错
苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动! 于是很愉快的报错 创建实例! 出来了 Web3:模块…...
算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长
卡码网110 字符串接龙 这题一开始用的邻接表dfs,不幸超时 #include <iostream> #include <list> #include <string> #include <vector> using namespace std;int minLen 501;bool count(string a, string b) {int num 0;for (int i 0; …...
搭建 MySQL MHA
搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创…...
python中的线程与进程
一、线程与进程 在计算机科学中,理解线程和进程的区别是重要的基础知识。这些概念对于多任务操作和并发编程尤为关键。下面将详细介绍线程与进程的区别、特点和各自的使用场景。 1.1 进程(Process) 进程是操作系统分配资源的基本单位。每个进…...
网络安全筑基篇——反序列化漏洞
目录 序列化是什么? 反序列化又是什么? 反序列化漏洞的危害 代码样例 常见的魔术方法 修复方式有哪些? 常见的反序列化漏洞 Shiro反序列化漏洞 Fastjson反序列化漏洞 序列化是什么? 将实例化对象转换成字节流的过程 反序…...
帝国cms定时审核并更新的方法
比如你网站采集了成千上万篇文章,不可能一下子全部放出来的,所以为了模拟人工发布,那么就需要定时审核发布文章内容,本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一:首先要满足你的表中有未审核的数据…...
一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议
前言 在当今的企业网络环境中,远程访问和交互审计成为了保障网络安-全的重要组成部分。然而,现有的解-决方案往往存在一些痛点,如复杂的配置、有限的协议支持、以及审计功能的不足。这些问题不仅增加了IT管理员的负担,也为企业的…...
使用Spring Boot和WebSocket实现实时通信
使用Spring Boot和WebSocket实现实时通信 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中使用WebSocket实现实时通信&am…...
【Vue】集成富文本编辑器
这文章使用的是wangeditor插件,官网地址:wangEditor,这个比较简单 安装 npm i wangeditor --save 使用 <div id"editor"></div>import E from "wangeditor"const editor new E("#editor") e…...
【论文阅读】--Popup-Plots: Warping Temporal Data Visualization
弹出图:扭曲时态数据可视化 摘要1 引言2 相关工作3 弹出图3.1 椭球模型3.1.1 水平轨迹3.1.2 垂直轨迹3.1.3 组合轨迹 3.2 视觉映射与交互 4 实施5 结果6 评估7 讨论8 结论和未来工作致谢参考文献 期刊: IEEE Trans. Vis. Comput. Graph.(发表日期: 2019&…...
重建大师引擎数0,本地引擎设置改不了,空三在跑,这样是正常的吗?
答:任务目录和引擎监控目录并没有按照网络集群设置,需要调整为网络路径。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网…...
APM教程-SkyWalking安装和配置
SkyWalking简介 APM (Application Performance Management) 即应用性能管理,属于IT运维管理(ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务&#…...
斯坦福大学 AI 研究部门推出的“7 周人工智能学习计划”
①AI Python 基础,包括计算机原理、语法、判断语句等; ②AI Python 进阶,涉及 Linux 命令、多任务编程等; ③机器学习,涵盖算法、数据结构等; ④计算机视觉与图像处理,包含图像分类、目标检测…...
World of Warcraft [CLASSIC] plugin lua
World of Warcraft [CLASSIC] plugin lua 魔兽世界lua脚本插件 World of Warcraft API - Wowpedia - Your wiki guide to the World of Warcraft D:\World of Warcraft\_classic_\Interface\AddOns zwf.lua function CountdownFunc()CountdownFrame CreateFrame("Fram…...
背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?
©自象限原创 作者丨艾AA 编辑丨薛黎 北京时间6月14日凌晨,在特斯拉股东大会上,马斯克阐述了对Robotaxi(自动驾驶出租车)商业模式的构想——特斯拉不仅会运营自己的无人驾驶出租车车队,还可以让特斯拉车主们的爱…...
CCSP自考攻略+经验总结
备考攻略 备考攻略准备阶段通读阶段精度阶段总复习阶段刷题阶段命运审判 写到最后 备考攻略 趁着对ssp知识点的理解还在,开始ccsp的考证之路,文章结构还是按照cissp备考篇的结构梳理。本次备考和cissp的离职在家备考不同,ccsp是在职利用非工…...
面试突击:ArrayList源码详解
本文已收录于:https://github.com/danmuking/all-in-one(持续更新) 前言 哈喽,大家好,我是 DanMu。ArrayList 是我们日常开发中不可避免要使用到的一个类,并且在面试过程中也是一个非常高频的知识点&#…...
力扣每日一题:2734. 执行子串操作后的字典序最小字符串
题目链接 脑子比较笨,分三种情况考虑: 以a开头。xxa,a在中间。 对于情况2还有两种可能: 1. 全是a,最后一个元素需要替换成z,因为必须执行一次操作。 2. aaaxxa,中间有一段非a,将这…...
im2col算法实现:从原理到代码的逐行剖析
1. im2col算法原理揭秘 想象你正在整理一副扑克牌,需要把相邻的几张牌快速组合起来。im2col算法的核心思想与此类似——它将图像中相邻的像素区域重新排列成矩阵的列,从而将卷积运算转化为高效的矩阵乘法。这个"image to column"的转换过程&am…...
系统发育树可视化终极指南:用TreeViewer轻松创建专业级进化树
系统发育树可视化终极指南:用TreeViewer轻松创建专业级进化树 【免费下载链接】TreeViewer Cross-platform software to draw phylogenetic trees 项目地址: https://gitcode.com/gh_mirrors/tr/TreeViewer 你是否曾为系统发育树的可视化而烦恼?面…...
Latte文本到视频生成实战:打造个性化AI视频的终极指南
Latte文本到视频生成实战:打造个性化AI视频的终极指南 【免费下载链接】Latte [TMLR 2025] Latte: Latent Diffusion Transformer for Video Generation. 项目地址: https://gitcode.com/gh_mirrors/la/Latte Latte是一款基于TMLR 2025研究成果的文本到视频…...
Naftis社区贡献指南:如何参与这个开源Istio项目
Naftis社区贡献指南:如何参与这个开源Istio项目 【免费下载链接】naftis An awesome dashboard for Istio built with love. 项目地址: https://gitcode.com/gh_mirrors/na/naftis Naftis是一个基于Apache 2.0协议开源的Istio仪表板项目,专为简化…...
别再在循环里写Thread.sleep()了!IntelliJ IDEA这个告警到底在说什么?
循环中的Thread.sleep():为什么IntelliJ IDEA警告你正在"忙等待"? 在IntelliJ IDEA中编写Java代码时,你是否遇到过这样的警告:"Call to Thread.sleep() in a loop, probably busy-waiting"?这个看…...
VNote批量操作终极指南:如何一次处理百篇笔记提升效率 [特殊字符]
VNote批量操作终极指南:如何一次处理百篇笔记提升效率 🚀 【免费下载链接】vnote A pleasant note-taking platform in native C. 项目地址: https://gitcode.com/gh_mirrors/vn/vnote VNote批量操作是每个高效笔记用户必须掌握的技能!…...
ComfyUI-FramePackWrapper:8GB显存也能流畅生成高质量AI视频的终极方案
ComfyUI-FramePackWrapper:8GB显存也能流畅生成高质量AI视频的终极方案 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper 你是否曾因显存不足而无法体验AI视频生成的魅力?现在…...
利用Taotoken的多模型能力为AIGC应用构建弹性后备方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken的多模型能力为AIGC应用构建弹性后备方案 对于开发图像生成、文案创作等AIGC应用的团队而言,服务连续性至…...
PyQt6 GUI开发实战:构建现代化桌面应用的架构设计指南
PyQt6 GUI开发实战:构建现代化桌面应用的架构设计指南 【免费下载链接】PyQt-Chinese-tutorial PyQt6中文教程 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial 在当今软件开发领域,桌面应用依然占据着重要地位,特…...
避开这些坑:ADSP-SC589开发中JTAG连接、驱动安装与调试的常见问题解决
ADSP-SC589开发实战:JTAG连接与调试避坑指南 当ADSP-SC589开发板与AD-HP530ICE仿真器首次相遇时,许多开发者会陷入连接失败的困境。不同于普通MCU开发,SHARC系列DSP的JTAG调试存在诸多技术细节,稍有不慎就会导致数小时的无效排查。…...
