博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String,StringBuilder,StringBuffer对比
阅读量:6833 次
发布时间:2019-06-26

本文共 868 字,大约阅读时间需要 2 分钟。

简述

StringBuilder 对比 StringBuffer

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

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

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

剖析

  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的常用方法
charAttrimlengthformatsubstringcontainsjoinequalsisEmptyconcatreplaceequalsignoreCasesplittoLowerCasetoUpperCasevalueOf

最后

面试高频问题。

转载地址:http://hlnkl.baihongyu.com/

你可能感兴趣的文章
SharePoint 2010 显示一个人是否在线
查看>>
第十篇 SpringBoot 2 x发送邮件
查看>>
从搞笑到高效,构建敏捷团队的基础原则
查看>>
python 基础语法学习笔记(2019年4月第二周学习笔记)
查看>>
springboot mybatis 项目框架源码 shiro 集成代码生成器 ehcache缓存
查看>>
《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
查看>>
LayoutInflater的作用
查看>>
QT 消息处理机制
查看>>
看过Jdk动态代理类长啥样吗?Jdk动态代理原理源码分析
查看>>
volatile
查看>>
JavaScript 二叉树算法排序 图文并茂 这篇就够了
查看>>
操作中按了home键后广播为什么接收不了问题
查看>>
C# 组合控件
查看>>
Jquery获取属性值
查看>>
JSON 对象和字符串
查看>>
mongo创建用户
查看>>
Vue解决接口访问跨域问题
查看>>
JQuery难点备忘
查看>>
6.Windows 二进制文件 (.exe)安装--终端安装
查看>>
selectedIndex 属性可设置或返回下拉列表中被选选项的索引号。
查看>>