无意中看到帖子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编程语言中,`java.lang.String`是最重要的类之一,它是所有字符串操作的基础。这个类位于核心类库中,因此无需显式导入即可使用。本文将深入探讨`String`类的一些关键知识点,包括它的特性、构造方法、常用...
11. **构建者模式**: Commons Lang 提供了多种Builder类,如 `StringBuilder` 和 `StringBuffer` 的变体,允许更灵活地构建复杂字符串。 12. **枚举枚举**: `EnumSet` 和 `EnumMap` 类提供了针对枚举类型的集合实现...
Java语言的核心库之一就是`java.lang`包,它是最基础且最重要的包,包含了所有Java程序都会用到的一些基本类。这个包中包含了如异常处理、基本数据类型的包装类、数学运算、类和对象操作等核心功能。 异常处理是...
在Java编程语言中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,它发生在程序运行过程中,由于Java虚拟机(JVM)的堆内存不足,无法分配新的对象时抛出。堆内存是Java应用程序中用来存储对象...
了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object
本文档主要介绍 Java 类库的结构和使用方法,涵盖了 Java 中一些常用的包和类,例如 java.lang、java.awt、java.io 等。同时,也介绍了 String 类和 StringBuffer 类的使用方法。 Java 类库是 Java API 的一部分,...
- 例如,`stringBuffer.append("Hello").append(" ").append("World");`将创建一个"Hello World"的字符串。 5. 其他方法: - `insert()`: 在指定位置插入字符串或字符。 - `delete()`: 删除指定范围内的字符。 ...
1. java.lang.NullPointerException 空指针异常是Java开发中非常常见的运行时异常。当应用程序试图在null对象上进行操作时,例如调用一个方法或访问一个字段时,就会抛出此异常。例如,在JSP页面中使用request....
在Java中,`java.lang.reflect.InvocationHandler`接口和`java.lang.Proxy`类用于实现动态代理,即适配器模式的一种形式。 6. **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以互相替换。Java 8...
《深入解析java.lang》 Java语言的核心库之一就是`java.lang`包,它包含了Java程序设计中最基础的类和接口,这些类和接口是每个Java应用程序必不可少的。由于`java.lang`包在编译时自动导入,因此程序员无需显式...
《Java编程中的java.lang包详解》 在Java编程语言中,`java.lang`包是所有Java程序的基础,它包含了进行基本操作和对象创建所必需的类和接口...因此,对这个包的深入学习和掌握,对于每一个Java开发者来说都至关重要。
Java编程语言中的java.lang包是一个核心包,它提供了Java语言运行时的基础类库,包含了Java程序运行的基本数据类型、异常处理类以及一些用于系统级别的工具类和接口。java.lang包中的类和接口不需要程序员显示地导入...
- `java.lang.StringBuilder` 和 `java.lang.StringBuffer`:用于高效构建字符串,线程安全的分别是`StringBuffer`。 - `java.lang.String`:Java中的不可变字符串类,包含大量字符串操作方法。 5. **异常处理...
Java语言提供了多种常用包,包括java.lang、String、StringBuffer、Math、Object、Class、Constructor、Method、Field、Date、Calendar、SimpleDateFormat、File等。这些包中的类和方法为Java开发提供了强大的支持。...
在学习这个包时,首先要理解的是,`java.lang`包是自动导入到每一个Java程序中的,因此无需显式导入。 【包装类】在Java中扮演着一个重要角色,它们为Java的八种基本数据类型(byte, short, int, long, float, ...
8. **字符串处理**:`java.lang.String`类是不可变的,`StringBuilder`和`StringBuffer`则用于动态构建字符串。了解它们的特性以及如何有效使用是非常重要的。 9. **反射(Reflection)**:反射允许在运行时检查和...
- `java.lang.StringBuilder` 和 `java.lang.StringBuffer`:可变的字符串对象,用于构建和修改字符串,`StringBuffer`在多线程环境下更安全。 3. **集合框架**: - `java.util.ArrayList`, `java.util....
, java.io.InputStream, java.nio.ByteBuffer, java.io.ByteArrayOutputStream)TXT (java.lang.String, char[], java.nio.CharBuffer, java.lang.StringBuffer, java.lang.StringBuilder)支持的数据源:...
Java.lang 包是最基础的包,包含了 String、StringBuffer、Number、Exception 等常用类。在编写 Java 程序时,理解和熟练使用这些类是提高效率的关键。同时,利用 Java 提供的完整技术文档,可以方便地查询和学习更...