String,StringBuilder,StringBuffer对比

简介: 简述StringBuilder 对比 StringBufferStringBuilder是非线程安全StringBuffer是线程安全的。StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别:StringBuilder与StringBuffer的对象存储在堆中,String对象存储在Constant String Pool(字符串常量池)它们两个是可变对象。

简述

StringBuilder 对比 StringBuffer

  • StringBuilder是非线程安全
  • StringBuffer是线程安全的。

StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别:

  • StringBuilder与StringBuffer的对象存储在堆中,String对象存储在Constant String Pool(字符串常量池)
  • 它们两个是可变对象。String一旦创建无法修改,并且String是线程安全的。
    参考: 为什么字符串类是Final的?

剖析

  1. 点进去JDK的源码,一眼就看出StringBuilder与StringBuffer差别。


    img_d9d09cfe95e22793cee488b990890554.png
    StringBulder继承AbstractStringBuilder

    img_cffc8ce455dc28a6dee3216fde4a08e0.png
    StringBuffer继承AbstractStringBuilder
  2. StringBuidler与StringBuffer的调用方式都一致,只不过StringBuffer加了synchronized.

img_86f88bb9ab0a39021dbceb13b1f0118f.png
StringBuilder方法
img_ec88a783d331bb2b6c887f5dcb115033.png
StringBuffer方法
  1. 看到这我们就明白StringBuilder与StringBuffer的关系了。本质上它们都是改变char数组中内容,来构建字符串,它们对外公开了修改char数组的方法,而String未公开。

几个有用的方法

  • System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
  • StringBuilder的reverse方法,实现字符串反转

面试题

  1. string、stringbuilder、stringbuffer区别
  2. String类为什么是final的
  3. 说说String的常用方法
charAt
trim
length
format
substring
contains
join
equals
isEmpty
concat
replace
equalsignoreCase
split
toLowerCase
toUpperCase
valueOf

最后

面试高频问题。

目录
相关文章
|
8天前
|
安全
String、StringBuuffer、StringBuilder三者的区别
String、StringBuuffer、StringBuilder三者的区别
|
13天前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
9 0
|
14天前
|
Java API 索引
Java基础&API(2) String、StringBuilder详解
Java基础&API(2) String、StringBuilder详解
|
14天前
|
存储 编解码 算法
Java 的 String StringBuilder StringBuffer(上)
Java 的 String StringBuilder StringBuffer
29 0
|
15天前
|
存储 安全 Java
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
38 8
|
28天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
16 0
|
2月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
29 0
|
29天前
|
缓存 Java
Java中循环创建String对象的内存管理分析
Java中循环创建String对象的内存管理分析
24 2
|
2天前
|
存储 缓存 安全
【 Java中String源码分析(JVM视角你不来看看?】
【 Java中String源码分析(JVM视角你不来看看?】
9 0
|
8天前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型