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

最后

面试高频问题。

目录
相关文章
|
1月前
|
安全 Java
Java StringBuffer 和 StringBuilder 类
Java StringBuffer 和 StringBuilder 类
16 0
|
14天前
|
移动开发 安全 Java
String、StringBuffer 、StringBuilder、StringJoiner
String、StringBuffer 、StringBuilder、StringJoiner
|
1月前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
|
1月前
|
存储 安全 Java
String、StringBuilder、StringBuffer的区别
String、StringBuilder、StringBuffer的区别
13 0
|
1月前
|
安全 Java
针对String、StringBuffer、Stringbuilder区别及使用场景
针对String、StringBuffer、Stringbuilder区别及使用场景
|
13天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
28天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
Java
Java String split()方法详细教程
Java String split()方法详细教程
22 0
|
1月前
|
存储 缓存 安全
【Java】Java中String不可变性的底层实现
【Java】Java中String不可变性的底层实现
14 0
|
1月前
|
Java 索引
Java中String方法学习总结_kaic
Java中String方法学习总结_kaic