StringBuffer,StringBuilder篇

String, StringBuffer, StringBuilder三者的异同:

String:不可变字符序列;底层用char[ ]存储
StringBuffer:可变的字符序列;线程安全,效率低
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全,效率高

StringBuffer源码:

底层使用可变char[ ]数组
synchronized线程同步

StringBuilder源码:

底层使用可变char[ ]数组

代码测试:

@Test
public void test1() {StringBuffer sb1 = new StringBuffer("abc");sb1.setCharAt(index:0, ch:'m');System.out.println(sb1);
}

此方法居然没返回值,底层源码分析:

文字说明:

String str = new String(); //char[ ] valuue = new char[0]; String
str1 = new String(“abc”); //char[ ] value = new char[ ]{‘a’,‘b’,‘c’};


StringBuffer sb1 = new StringBuffer(); //char[ ] value = new char[16] ; 底层创建了一个长度是16的数组 sb1.append(‘a’); //value[0] = ‘a’;


StringBuffer sb2 = new StringBuffer(“abc”); //char[ ] value = new char[“abc”.length() + 16]

//问题1.System.out.println(sb2.length()); //3

//问题2. 扩容问题:如果要添加的数据底层数组盛不下,那就需要扩容

长度不够用,调用newCapacity(minimunCapacity)方法

向左移一位,x2倍+2的长度,返回

//问题3.由于扩容问题,会重新创造数组,并复制数组,影响效率,可以指定capacity大小
指导意义:开发中建议使用StringBuffer(int capacity) 或 StringBuilder(int capacity)


StringBuffer:

java常用类-StringBuffer,StringBuilder相关推荐

  1. java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...

    一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...

  2. Java常用类StringBuffer详解

    内容多为最近学习的自我总结,可能有些地方写的不严谨,甚至会有错误的地方,仅供参考,如发现错误敬请指出,谢谢! 灰色字体为补充扩展内容,多为帮助自己理解. StringBuffer概述: 线程安全的可变 ...

  3. day15 Java 常用类 StringBuffer类

    文章目录 一.构造方法 1.1 StringBuffer() 1.2 StringBuffer(int capacity) 1.3 StringBuffer(String str) 二.StringB ...

  4. Java - 常用类 - StringBuffer类

    文章目录 StringBuffer类基本介绍 String VS StringBuffer StringBuffer的构造器 StringBuffer <=> String 相互转换 St ...

  5. Java计基础---常用类之StringBuilder类--String、StringBuilder和StringBuffer 的区别

    常用类之StringBuilder类 StringBulider 类:也是一个字符串类.是一个可变的字符序列,在类中提供了可以改变字符串内容的常用的方法. StringBulider 和 String ...

  6. Java常用类-StringBuilder

    Java常用类-StringBuilder StringBuilder类创建的对象其实是可变的字符串 StringBuilder的实例对象在调用append方法的时候,会对传入字符串的长度与当前剩余空 ...

  7. 返回值 包装类_(九)Java常用类

    (九)Java常用类 String类 概述 /*String:字符串,使用一对""来表示. * 1.String声明为final,不能被继承. * 2.String实现了Seria ...

  8. 舔砖加瓦(java)之java常用类

    添砖加瓦(java) 常用类 前言: 大家好我是kdy丶 这里写目录标题 添砖加瓦(java) ***常用类*** 前言: 一丶字符串相关的类 1丶String类 2丶StringBuffer和Str ...

  9. Java常用类(谷粒商城学习记录)

    Java常用类 谷粒商城学习记录 谷粒商城学习记录 谷粒商城学习记录 干嘛老是提示我与别人的文章相似呢?真的是我自己整理的啊啊啊 老是提示与这个文章相似 https://blog.csdn.net/c ...

最新文章

  1. Xilinx SelectIO 接口
  2. NetLink Communication Mechanism And Netlink Sourcecode Analysis
  3. yml配置文件中有特殊字符解决方案
  4. Java入门1.2.3—一个老鸟的Java学习心得
  5. 剑指offer之反向打印链表值
  6. 让VS2005用起来更顺手
  7. 【Kafka】Kafka Tool 2 使用教程 SASL_PLAINTEXT
  8. 页面校验请求MmEwMD(转载)
  9. 后端传输流跨域_Java开发中解决Js的跨域问题过程解析
  10. Lucene系列-分析器
  11. (转)巴菲特的投资智慧--1998年的演讲
  12. window下c语言c s通信,c++ Windows Socket实现最简单的C/S网络通信(TCP)
  13. 图片去水印工具:Inpaint 7.2中文专业破解版下载及使用方法
  14. 正确认识使用Word模板
  15. 边做边爱(1)——mapbox做分析图
  16. ARFoundation之路-人脸检测增强之二
  17. 帮你早点下班~基于飞书API实现next.js网站内容自动生成实践
  18. android+下落+动画,完美起航-Android面试题之动画+事件处理篇
  19. Android 系统剪贴板的使用 - 复制、获取和清空
  20. 批处理与管道-过滤器

热门文章

  1. 机器学习模型评价指标+模型出错的四大原因及如何纠错
  2. iOS开源项目周报0413
  3. Python查询Jira issue信息
  4. 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...
  5. NYOJ 19 擅长排列的小明
  6. 《原神》甘雨搭配攻略分享:如何选甘雨搭配圣遗物?
  7. HTML5与CSS3新增特性
  8. Android超级管理员,实现一键锁屏等等
  9. 用 Python 进行排序的终极指南
  10. 058基于Springboot医院管理系统【附源码】