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 的区别等…

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. Java 基础(bilibili-黑马程序员)
  2. 菜鸟教程–Java

在这里插入图片描述


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

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

相关文章

【技巧】如何检查多个GPU之间是否支持P2P通信

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 需要用到cuda_samples:GitHub - NVIDIA/cuda-samples 该工具的详细解释可以看这个: 【知识】详细介绍 CUDA Samples 示例工程…

不止是只有维度建模,数据仓库还有Data Vault建模

引言 在数据仓库设计中,传统的星型和雪花型模型有着各自的优势和劣势。随着数据量的增大和数据源的多样化,Data Vault(数据仓库)建模方法逐渐受到关注和应用。Data Vault建模是一种灵活、可扩展、适应性强的建模方法,…

Java知识点整理 12 — 前端 Ant Design Pro 初始化模板使用

一. 项目初始化 Ant Design Pro 是基于 Ant Design 和 umi 封装的一整套企业级中后台前端设计框架,致力于在设计规范和基本组件的基础上,继续向上构建,提炼出典型模板或配套设计资源,进一步提升企业级中后台产品设计研发过程中的…

用MySQL和navicatpremium做一个项目—(财务管理系统)。

1 ER图缩小的话怕你们看不清,所以截了两张图 2 vsdx绘图结果 3DDL和DML,都有点长分了好多次上传,慢慢看 DDL -- 用户表 CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用…

SpringCloud分布式微服务链路追踪方案:Skywalking

一、引言 随着微服务架构的广泛应用,系统的复杂性也随之增加。在这种复杂的系统中,应用通常由多个相互独立的服务组成,每个服务可能分布在不同的主机上。微服务架构虽然提高了系统的灵活性和可扩展性,但也带来了新的挑战&#xf…

vue的学习--day2

如有错误,烦请指正~ 目录 一、什么是单页面应用程序 二、使用工具:node.js 三、工具链 易错点 一、什么是单页面应用程序 多个组件(例如登录、注册等以vue结尾的都叫做组件)在一个页面显示,叫单页面应用…

【软件测试】白盒测试与接口测试详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是白盒测试 白盒测试是一种测试策略,这种策略允许我们检查程序的内部结构&a…

Vite: Esbuild的使用与其插件开发

概述 作为 Vite 的双引擎之一,Esbuild 在很多关键的构建阶段(如 依赖预编译 、 TS 语法转译 、 代码压缩 ) 让 Vite 获得了相当优异的性能,是 Vite 高性能的得力助手无论是在 Vite 的配置项还是源码实现中,都包含了不少 Esbuild 本身的基本概…

你知道大数据信用分低需要如何改善吗?

在当今社会,大数据信用分已经成为个人信用评估的重要指标之一。然而,有时候我们会发现自己的大数据信用分较低,这可能会对我们的信用状况产生负面影响。那么,如何改善自己的大数据信用分呢?本文将从信用分低的原因进行分析&#…

【Micro-ROS学习】

Micro-ROS 是专为 ROS 2 设计的,它允许在微控制器(microcontrollers)上实现ROS 2的功能。Micro-ROS 从 ROS 2 架构优化而来,目的是让那些资源有限的嵌入式设备也能够接入ROS 2生态系统,享受ROS 2带来的标准化通信、模块…

java简易计算器(多种方法)

parseDouble() 方法属于 java.lang.Double 类。它接收一个字符串参数,其中包含要转换的数字表示。如果字符串表示一个有效的 double,它将返回一个 double 值。 应用场景 parseDouble() 方法在以下场景中非常有用: 从用户输入中获取数字&a…

国内AI行业对GPU算力的需求有多大?

随着人工智能(AI)技术的飞速发展,算力作为支撑其持续进步的核心动力,在国内的重要性日益凸显,无论是海外还是国内,AI算力行业都呈现出蓬勃发展的态势,而国内对于AI算力的需求更是呈现出爆发式的…

离散傅里叶变化

傅里叶变换 对傅里叶变换了解不是很清楚的朋友推荐一下这个帖子,讲得很详细 傅里叶变换 源码 先看源码链接 #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "open…

从零开始了解GPT-4o模型:它是如何工作的?

人工智能(AI)技术正以惊人的速度发展,其中最引人注目的是OpenAI发布的GPT-4o模型。作为GPT系列的新成员,GPT-4o在多模态输入处理和响应速度上取得了重大进展。本文将深入探讨GPT-4o的工作原理,帮助您全面了解这一尖端A…

MySQL实训

项目名称与项目简介 股票交易系统是一个综合性的金融服务平台,它提供了股票买卖、交易查询、用户管理、股票信息管理以及资金账户管理等功能。系统旨在为用户提供一个安全、高效、便捷的股票交易环境,让用户能够实时掌握市场动态,做出合理的…

模拟物理弧线轨道运动(模拟飞盘,子弹运动)

模拟物理弧线运动(模拟飞盘) 介绍实现代码总结 介绍 模拟弧线的运动,并且对象始终朝向运动的方向,模拟飞盘子弹的运动轨迹。这里我是没有加重力这么一个概念的,当然了重力其实比较简单可以参考我之前写的模拟抛物线运动…

ubuntu 挂载新硬盘 记录

Ref 安全自动挂载硬盘, https://berylbot.com/archives/mount-disks-ubuntu 挂载新硬盘, https://berylbot.com/archives/mount-disks-ubuntu 1. 检查新硬盘是否被系统识别 lsblk -f 查看所有硬盘的UUID, 其中 mount point 为空则表示尚未挂载的硬盘。 列出所有可用…

ET9中ETTask传递新的Context原理

ET9中ETTask传递新的Context原理 前言 每一个异步函数都会创建两个对象, 第1个是当前异步函数返回值(ETTASK)对应的ETAsyncTaskMethodBuilder,通过这个类的静态方法Create创建返回,这个builder类中会有一个Task对象&…

idea 自动生成序列化数字

目标:当类继承Serializable后自动生成序列化Uid 网上查了很多说勾选class without ‘serialVersionUID’ 但是我勾选没用 最后发现,我勾选的是Serialization issues里面的配置,要勾选的是JVM languages下的 如下图所示,记录一下…

技术干货|SimLab 电子产品热流体仿真

电子产品热仿真特点有哪些? 结构复杂,电子设备包含几十~上千个元器件 体积小,功率密度高、关注热敏感元器件 多种冷却方式,自然冷却、风扇冷却、液冷、热管等 多维度,芯片级,板级,系统级 单…