`
cectsky
  • 浏览: 44627 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

【java】java.lang.StringBuffer学习

阅读更多

无意中看到帖子http://www.iteye.com/topic/984288,回想上午在看org.apache.commons.lang.StringUtils源码的时候,发现这么一段code:

public static String join(Iterator iterator, String separator){
...
StringBuffer buf = new StringBuffer(256);
...
}

 按照我之前的习惯,就直接StringBuffer sb = new StringBuffer("");了,why?

 

分析source code,StringBuffer的构造器为默认构造长度为16的字符数组。

public StringBuffer() {
	super(16);
}
public StringBuffer(String str) {
	super(str.length() + 16);
	append(str);
}

  

看继承的类的实现:

char[] value;
AbstractStringBuilder(int capacity) {
        value = new char[capacity];
}

void expandCapacity(int minimumCapacity) {
        int newCapacity = (value.length + 1) * 2;//先以(当前容量+1)*2扩容
     if (newCapacity < 0) {
            newCapacity = Integer.MAX_VALUE;
        } else if (minimumCapacity > newCapacity) {
	newCapacity = minimumCapacity;        //如果增长超过上面扩容的容量,以增长的容量进行扩容
	}
        value = Arrays.copyOf(value, newCapacity);    //数组copy,底层无非就是System.arraycopy(),艹!~~
}

 

 应该无非就是减少重建array的次数,当然前提是知道大概StringBuffer的容量。

分享到:
评论

相关推荐

    java.lang包.ppt

    了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object

    Java 高级特性.doc

    Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class); String str = (String)constructor.newInstance(new StringBuffer("abc")); System.out.println(str); ...

    Java2游戏编程.pdf

    4.1.3 java.lang.StringBuffer 4.1.4 封装类 4.1.5 java.lang.Math 4.1.6 java.lang.System 4.1.7 java.lang.Cloneable 4.1.8 java.lang.Thread 4.2 java.io包 4.3 java.util包 4.3.1 java.util.StringTokenizer ...

    Java基础知识点总结.docx

    &lt; java.lang &gt;StringBuffer字符串缓冲区:★★★☆ 73 &lt; java.lang &gt;StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 &lt; java.util &gt; ...

    Java资源加载库Azzet.zip

    , java.io.InputStream, java.nio.ByteBuffer, java.io.ByteArrayOutputStream)TXT (java.lang.String, char[], java.nio.CharBuffer, java.lang.StringBuffer, java.lang.StringBuilder)支持的数据源:...

    北大青鸟JAVA培训教程-java.lang包

    学习目标 了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object

    Java程序的性能优化StringBuffer与Vector.zip_养 java

    在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身。养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。

    StringBuffer和String_区别

    java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

    JAVA相关基础知识120问

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 ........... 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非...

    JAVA基础面试题(带答案的)

    JAVA面试题 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

    java面试笔试题大汇总

    java面试笔试题大汇总: JAVA相关基础知识(100多到)、代码差错等 ...java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 。。。

    java面试笔试题集合

    java面试笔试题集合4. 多态性: 多态性是指允许不同类的...java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别

    java源码stringbuffer-Jaffree:Javaffmpeg和ffprobe命令行包装器

    它通过java.lang.Process与 ffmpeg 集成。 灵感来自 在以下人员的帮助下进行了测试 操作系统:Ubuntu、MacOS、Windows JDK : 8, 11, 14 用法 &lt; dependency &gt; &lt; groupId &gt;com.github.kokorin.jaffree&lt;/ ...

    Java精华(免费版)

    所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。   它们的不同之处表现在两方面:机制上和逻辑上。   一...

    java编程基础,应用与实例

    12.2 java.lang.StringBuffer 167 12.3 wrapper class 169 12.4 java.lang.Math类 172 12.5 java.Math.BigInteger类 174 12.6 java.Math.BigDecimal类 176 12.7 巩固练习 177 第13章 Java输入与输出(I...

    史上最全Java面试题目大集合

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    Java 面试宝典

    34、String 和 StringBuffer 的区别 ............................................................................... 24 35、如何把一段逗号分割的字符串转换成一个数组? .......................................

Global site tag (gtag.js) - Google Analytics