StringBuffer总结分析】的更多相关文章

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候你就可以使用StringBuffer.典型地,你可以使用StringBuffers来动态构造字符数据. 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作.不可变类. 3.Stri…
构造方法 /** * Constructs a string buffer with no characters in it and an * initial capacity of 16 characters. * 创建容量为16个char大小的空间 */ public StringBuffer() { super(16); } /** * Constructs a string buffer with no characters in it and * the specified initi…
StringBuffer类和StringBuilder类 三者比较 String 不可变字符序列 底层用char[]存储 StringBuffer 可变的字符序列 线程安全的 效率低 底层结构使用char[]存储 扩容问题 如果要添加的底层数组盛不下,需要扩容底层的数组 默认情况下扩容为原来容量的2倍 + 2 ,同时将原有的数组元素复制到新的数组中 StringBuilder 可变的字符序列 线程不安全 效率高 源码分析 和StringBuffer源码一样,只是线程不安全了而已 三者效率比较 S…
1. 本周学习总结 以几个关键词描述本周的学习内容.并将关键词之间的联系描述或绘制出来. 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. 引用类型 引用类型是指向一个对象,感觉跟以前学的指针有点类似,但是一般要使用new来初始化. 包装类 可以自动装箱将基本类型转换成Integer类型,自动拆箱将Integer类型自动转换成int. 字符串池字符串池可以看成字符串的一个集合,具有相同字符串序列的字符串在池子里只有一个. 一维数组 与C语言里面的数组一样,数组中的元素都具有…
  纵骑横飞 章仕烜   昨天比较忙 今天把StringBuffer StringBulider的源码分析 献上   在讲 StringBuffer StringBuilder 之前 ,我们先看一下 它们共同的老祖宗 AbstractStringBuilder 这是 StringBuilder StringBuffer 的根基 再看看 这两个实现类 里边有什么   很显然,这两个东西什么都没写吧   我们看看 另一个门派的 String   看出 为什么 我们说String 对象是不可变的 St…
利用反编译具体看看"+"的过程 1 public class Test 2 { 3 public static void main(String[] args) 4 { 5 int i=10; 6 String s="abc"; 7 System.out.println (s+i); 8 } 9 } 可以看到的确是创建了StringBuilder类,然后调用了两次append方法,并且调用了toString方法. 查看AbstractStringBuilder源码可…
//------------------------------------------------------------------------ 写篇博客不easy.请尊重作者劳动成果. 转载请注明出处:http://blog.csdn.net/chdjj //------------------------------------------------------------------------ 我认为要通过源代码研究一个类,应该先从总体上了解这个类.比方说这个类的继承体系,有哪些超…
1.性能比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 String:字符串常量 StringBuffer:字符串变量 StringBuilder:字符串变量 3.源码分析 String:查看源码得知,String类的声明是:public final,所以很清楚的知道,final的值是改变不了的,所以如果我们用String来操作字符串的时候,一旦字符串的值改变,就会…
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuffer和StringBuilder都是继承自String这个类,即认为String类是其他两个类的超类.这种想法似乎很合理,但其实是不对的,事实上StringBuffer和StringBuilder确实是继承自某个类,但是这个类并不是String…
简介 StringBuilder与StringBuffer是两个常用的操作字符串的类.大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的.前者是JDK1.5加入的,后者在JDK1.0就有了.下面分析一下它们的内部实现. 继承关系 public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence public…
String类的申明 public final class String implements java.io.Serializable, Comparable<String>, CharSequence {…} String类用了final修饰符,表示它不可以被继承,同时还实现了三个接口, 实现Serializable接口表示String类可被序列化:实现Comparable<T> 接口主要是提供一个compareTo 方法用于比较String字符串:还实现了CharSequen…
[源码分析]StringBuffer StringBuffer是继承自AbstractStringBuilder的. 这里附上另外两篇文章的连接: AbstractStringBuilder : http://www.cnblogs.com/noKing/p/9427967.html StringBuilder : http://www.cnblogs.com/noKing/p/jdk8_StringBuilder.html 构造器 我每篇文章都说. 请忽略我的"My". 我copy了…
StringBuilder StringBuffer 源码 这里只是我个人笔记, 并没有在这篇文章里做任何技术分享, 请同学们绕道- -.如果需要我会后期补上的..... 本来是想分析源码来着, 但是发现这部分源码相对简单.....比较容易看懂... 最近看了StringBuilder StringBuffer的源码, 自己新建为了MyStringBuilder MyStringBuffer. 代码贴了出来, 留个记录, 当做笔记了. (或者github:https://github.com/G…
以下代码只挑选了关键方法进行分析 public final class String //String类不可继承,实现了序列化 implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; //String底层就是一个char数组 private int hash; // Default to 0 private static final long serialVe…
1.类结构 String Diagrams StringBuffer Diagrams StringBuilder Diagrams 通过以上Diagrams可以看出,String,StringBuffer,StringBuilder都是CharSequence的实现类,其中StringBuffer,StringBuilder都是AbstractStringBuilder的子类 2.源码分析 a>String 通过String的API可以看出String类中没有像StringBuffer和Str…
JDK源码分析系列---String,StringBuilder,StringBuffer 1.String public final class String implements java.io.Serializable, Comparable<String>, CharSequence { //存储字符,final修饰 private final char value[]; //缓存hash code,默认0 private int hash; //序列号 private static…
转载自https://segmentfault.com/a/1190000002683782 我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String.StringBuffer.StringBuilder 都实现了 CharSequence 接口,内部都是用一个char数组实现,虽然它们都与字符串相关,但是其处理机制不同. String:是不可改变的量,…
StringBuilder.StringBuffer源码分析 StringBuilder源码分析 类结构 public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence StringBuilder使用final关键字修饰,和String一样不可以被继承 StringBuilder继承AbstractStringBuilder并实现了Serial…
StringBuffer是一个线程安全的可变序列的字符数组对象,它与StringBuilder一样,继承父类AbstractStringBuilder.在多线程环境中,当方法操作是必须被同步,StringBuffer内的方法被同步化时,以实现跟在单线程中操作一样的一致性. public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence { //一…
简介 StringBuffer与StringBuilder是两个常用的操作字符串的类.大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的.前者是JDK1.5加入的,后者在JDK1.0就有了. 继承关系 public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence public final class S…
面试官Q1:请问StringBuffer和StringBuilder有什么区别? 这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面试题,被问到的概率百分之八九十.下面我们从面试需要答到的几个知识点来总结一下两者的区别有哪些? 继承关系? 如何实现的扩容? 线程安全性? 继承关系 从源码上看看类StringBuffer和StringBuilder的继承结构: 从结构图上可以直到,StringBuffer和StringBuiler都继承自AbstractStringBuilder类…
它们到底都有什么区别呢! 三者都是用来对字符串进行操作,String通常用来定义一个变量,而StringBuilder StringBuffer则通常用来对字符串进行拼接等操作.但其实String同样的可以用来拼接字符串,可我们为什么很少使用呢,这样从三者的底层代码说起. String的底层代码为一个用final修饰的char数组,这意味着定义一个String变量以后,该变量的内容是不可变的. StringBuilder 与StringBuffer都继承自AbstractStringBuilde…
默认值初始化: 1.  首先明确 StringBuffer类与 StringBuilder类均继承了抽象类 AbstractStringBuilder类 无参构造方法 2. 源码中StringBuffer类和StringBuilder类初始化均调用父类的构造方法:   父类初始化:   子类默认传入值16 给父类初始化字符数组   有参构造方法:     扩容算法: 使用append()方法在字符串后面追加东西的时候,如果长度超过了该字符串存储空间大小了就需要进行扩容:构建新的存储空间更大的字符…
首先看一下他们的继承关系   这个两个对象都继承了AbstractStringBuilder抽象类.   1.他们的实现方式都一样的,唯一区别的StringBuffer在多线程的时候是保证了数据安全,每个方法都加上synchronize关键字,让线程同步.   2.从初始化开始看StringBuffer 有三个构造函数. (1) 第一个是无参的构造函数 ,默认调用AbstractStringBuilder的构造函数,将一个大小为16长度的char数组赋值给父类的value值. (2)第二个是in…
一 概述 StringBuffer类被 final 所修饰,不能被继承,StringBuffer继承了AbstractStringBuilder类, 是一个可变的字符序列,并且类中方法都有synchronized修饰,实现了线程安全 StringBuilder类也被final修饰,继承了AbstractStringBuilder类,与StringBuffer区别是没有实现线程安全,方法逻辑都是调用的父类方法逻辑 二 StringBuffer源码解析 大部分方法都调用super父类逻辑,所以这里只…
之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简单的测试吧: public static void main(String[] args) { testStringJoin(); } static void testStringJoin() { long beg = System.currentTimeMillis(); String s = null;…
好久没写博客了,一直在纠结后面的路怎么发展?好了不说废话了!!正题开始!! String与StringBuffer类是我们在开发中最常用的,我们现在一起来分析一下这两个类,首先我们先来谈谈String的方法: String s = “123456”: 1.length()方法: 这个方法是获取字符串长度的方法,常常用于登陆注册页中判断用户输入的字符长度是否合法: 例: String pswd = "abc1234567"; if(pawd.length()>6){ System.…
在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可能的bug--空的try/catch/finally/switch块.– 无用代码(Dead code):无用的本地变量,方法参数和私有方法.– 空的if/while语句.– 过度复杂的表达式--不必要的if语句,本来可以用while循环但是却用了for循环.– 可优化的代码:浪费性能的String…
总结:1.如果要操作少量的数据用 = String   ==================================>字符串常量2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder =====================>线程安全3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer ======================>非线程安全String 类型的性能: 在于 String 是不可变的对象, 因此在每次对 String 类型…
性能分析神器VisualVM VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收器.执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作.本文主要介绍如何使用 VisualVM 进行性能分析及调优. 目录: 准备工作 内存分析篇 内存堆Heap 永久保留区域PermGen CPU分析篇 线程分析篇 参考文献 准备工作 自从 J…