`

java中stringbuffer剖析

 
阅读更多

浏览了一个string与stringbuffer在添加n个字符串时的效率问题,忍不住翻了下源代码,string就不想多说了,final标示的,每次用“+”来连接新的字符串必须创建新的字符串对象,因此效率太低,

 

stringbuffer内部实用array实现,看一下扩容的方法,当append空间不够时,大小变为原来的2倍,然后用arraycopy复制。:

 

//数组扩容   
void expandCapacity(int minimumCapacity) {  
    //先扩容成 (原先的长度+1)*2  
    int newCapacity = (value.length + 1) * 2;  
    //判断newCapacity值是否满足要求  
     //如果新的长度还是不够,则直接取值 minimumCapacity   
    if (newCapacity < 0) {  
       newCapacity = Integer.MAX_VALUE;  
    } else if (minimumCapacity > newCapacity) {  
       newCapacity = minimumCapacity;  
    }     
    char newValue[] = new char[newCapacity];  
    //将原先的数据拷贝到新的char 数组中。  
     System.arraycopy(value, 0, newValue, 0, count);  
    value = newValue;  
}
分享到:
评论

相关推荐

    Java语言中StringBuffer的用法

    通过分析这些文件,我们可以学习到`StringBuffer`在实际编程中的多种应用方式,进一步巩固其用法和优势。 总的来说,`StringBuffer`是Java中处理可变字符串的首选工具,尤其是在需要频繁修改字符串或在多线程环境中...

    String StringBuffer和StringBuilder区别之源码解析

    在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间...

    Java StringBuilder和StringBuffer源码分析

    但在现代Java应用中,由于并发编程模型的改变,如使用`ThreadLocal`或者避免共享对象,`StringBuffer`的使用已经相对较少,更多时候开发者会选择在必要时才进行同步,而不是在整个字符串操作过程中。 五、String、...

    StringBuffer类的总结

    `StringBuffer` 类在 Java 中有着广泛的应用场景,特别是在需要对字符串进行频繁修改的情况下。掌握了 `StringBuffer` 类的使用方法,可以极大地提高开发效率并减少资源消耗。同时,需要注意的是,在单线程环境下,...

    java面试笔试题String 和StringBuffer的区别

    在Java编程语言中,`String`与`StringBuffer`是两个重要的字符串处理类,它们各自具有独特的特性和用途,尤其在面试或笔试中常被提及作为考察应聘者对Java基础知识掌握程度的重要知识点。 ### `String`类:不可变性...

    java StringBuffer详解

    Java中的`StringBuffer`类是线程安全的字符串操作类,它是`StringBuilder`的一个线程安全版本。在多线程环境中,当多个线程同时修改一个字符串时,`StringBuffer`通过内部同步机制确保了数据的一致性,避免了线程间...

    StringBuffer和String_区别

    **StringBuffer** 是 Java 提供的一个线程安全的可变字符序列类。它类似于 String,但是可以在创建后修改其内容。StringBuffer 在内部维护了一个字符数组来保存字符串,并提供了多种方法允许我们插入、删除或替换...

    String和StringBuffer详细用法总结

    根据给定的信息,本文将对`String`与`StringBuffer`在Java中的使用进行详细的解析与对比,并结合实例深入分析二者的异同及其适用场景。 ### `String` 和 `StringBuffer` 的基本概念 #### `String` 在Java中,`...

    JAVA中String类与StringBuffer类的区别

    在Java编程语言中,String类和StringBuffer类是处理字符串的两种主要方式,它们各自有不同的特性和适用场景。理解二者的区别对于编写高效、优化的代码至关重要。 1. **String类**: - **不可变性**:String类的...

    java CharSequence、String、StringBuffer、StringBuilder详解

    通过分析提供的`String.java`、`StringBuffer.java`和`StringBuilder.java`源码,我们可以深入理解这些类的内部实现,例如它们如何处理字符序列,以及在进行字符串操作时的内存分配和性能优化策略。源码阅读有助于...

    api_StringBuffer.zip_fullvgv_java_tasteazi

    在Java编程语言中,`StringBuffer`类是一个非常重要的工具,尤其在处理字符串拼接时。这个类位于`java.lang`包中,是线程安全的字符串操作类,与`StringBuilder`类一起提供了对字符串的动态构建。在多线程环境中,`...

    string和StringBuffer的区别

    在Java编程语言中,`String`和`StringBuffer`都是用来表示和操作字符串的重要类,但它们在使用场景和性能上有显著的区别。了解这些差异对于编写高效、优化的代码至关重要。 首先,`String`类是不可变的。这意味着...

    纯面向对象的思想jdbc编程,StringBuffer线程,线程习题

    在Java中,String类是不可变的,这意味着它的内容一旦创建就不能改变,而StringBuilder和StringBuffer则提供了可变的字符串操作。其中,StringBuffer线程安全是因为它的方法加了同步锁,可以保证在多线程环境下,对...

    计算机后端-Java-Java核心基础-第21章 常用类 20. StringBuffer的源码分析.avi

    计算机后端-Java-Java核心基础-第21章 常用类 20. StringBuffer的源码分析.avi

    String与StringBuffer区别详解

    在Java编程语言中,`String`和`StringBuffer`(在Java 5之后被`StringBuilder`取代,但在多线程环境中仍然使用`StringBuffer`)是处理文本字符串的两个核心类,它们各自有着不同的特性和用途。理解它们的区别对于...

    java编写 c语言词法分析器

    Java的`StringBuilder`或`StringBuffer`类可以用来存储和操作输入流中的字符。 5. **Token的定义和处理**:每个识别出的标记都应该关联一个类型,比如`TOKEN_ID`代表标识符,`TOKEN_NUMBER`代表数字。在Java中,...

    深入剖析java中String、StringBuffer、StringBuilder的区别

    Java中的String、StringBuffer和StringBuilder类都是用于处理字符串的,但它们之间存在显著的区别,主要体现在字符串的可变性、线程安全性和性能优化上。 首先,关于**可变性**,String类是不可变的。这意味着一旦...

    java语言编写的词法分析器

    5. 结果存储:在这个例子中,分析器将所有生成的记号存入一个StringBuffer对象,这允许后续的处理步骤(如语法分析)以字符串形式访问分析结果。 在实际的编译器设计中,词法分析器往往是与语法分析器、语义分析器...

    java 中文转换拼音

    在Java编程语言中,中文字符转换为拼音是一个常见的需求,特别是在处理中文文本的搜索、语音合成或者数据分析等场景。这个给定的压缩包文件“languageConvert”可能包含了一个实现此功能的Java程序,使得开发者能够...

Global site tag (gtag.js) - Google Analytics