String、StringBuilder、StringBuffer

String适用于少量拼接的

StringBuffer与StringBuilder是可大量拼接的
String对象的值是不可改变的,会产生问题,经常拼接字符串时,会创建多个字符转对象,造成浪费

如果某一些场景下,需要大量的拼接字符串就可以使用StringBuffer或StringBuilder

  • StringBuffer默认底层数组容量--16
String为什么不能改变??

底层是用final修饰的char数组,不可改变

StringBuilder与StringBuffer为什么可以改变

StringBuilder与StringBuffer底层的char数组没有被final修饰,故可以被

##在底层数组上直接操作##

添加方法:

  • s.append(String str);//在数组末尾添加字符串
  • s.insert(int index,String str);//在指定的位置上插入

删除方法:

  • s.deleteCharAt(int index);//删除某个位置的元素
  • s.delete(int start,int end);//删除某一个范围的元素

替换方法:

  • replace(int start,int end,String str);//用str替换某一个范围的元素

反转方法:

  • reverse();//反转列表 e.g : abc --> cba

截取方法:

  • subString(int start);//从某个位置开始截取
  • sunString(int start,int end);//截取某一个范围的值

StringBuffer与StringBuilder的区别:

**StringBuffer是线程安全的,**它的操作方法(append,insert,delete)上加了同步锁(synchronized),在多线程的情况下,StringBuffer会将这些操作进行序列化,避免了线程安全问题

StringBuilder是线程不安全的, 由于StringBuffer的方法是同步的,每次调用方法时都需要获取锁,这会带来额外的开销。但是StringBuilder由于没有同步,所以在单线程环境中执行相同的操作时,通常会比StringBuffer快。

相关推荐
考虑考虑5 小时前
Jpa使用union all
java·spring boot·后端
用户3721574261356 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊7 小时前
Java学习第22天 - 云原生与容器化
java
渣哥9 小时前
原来 Java 里线程安全集合有这么多种
java
间彧9 小时前
Spring Boot集成Spring Security完整指南
java
间彧9 小时前
Spring Secutiy基本原理及工作流程
java
Java水解10 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆12 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学13 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole13 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端