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,将这…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
