当前位置: 首页 > news >正文

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.lryc.cn/news/385343.html

相关文章:

  • 吐血推荐!3款视频生成工具,全部国产,都免费
  • 【Web3】Web3.js 启动!并解决Web3 is not a constructor报错
  • 算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长
  • 搭建 MySQL MHA
  • python中的线程与进程
  • 网络安全筑基篇——反序列化漏洞
  • 帝国cms定时审核并更新的方法
  • 一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议
  • 使用Spring Boot和WebSocket实现实时通信
  • 【Vue】集成富文本编辑器
  • 【论文阅读】--Popup-Plots: Warping Temporal Data Visualization
  • 重建大师引擎数0,本地引擎设置改不了,空三在跑,这样是正常的吗?
  • APM教程-SkyWalking安装和配置
  • 斯坦福大学 AI 研究部门推出的“7 周人工智能学习计划”
  • World of Warcraft [CLASSIC] plugin lua
  • 背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?
  • CCSP自考攻略+经验总结
  • 面试突击:ArrayList源码详解
  • 力扣每日一题:2734. 执行子串操作后的字典序最小字符串
  • C++11中std::thread的使用
  • 酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统
  • 大数据之Hadoop部署
  • Java异常处理中的“throw”与“throws”的区别
  • 英语智汇学习系统
  • ExtractAItoTEXT 提取Adobe illustrator AI文件中的文字到文本文件翻译并写回到Adobe illustrator AI文件
  • ms17-010 ms12-020 ms-08-067
  • 【海思Hi3403V100】多目拼接相机套板硬件规划方案
  • AI的赚钱风向,彻底变了!
  • 服务器重启后jenkins任务内容不见了,并且新建任务也不见了
  • 如何选择合适的WordPress主机?