在JAVA常用类中有StringBuilder与StringBuffer这两个用来处理字符串的类,其中有两个很常用的方法length()和capacity(),发现他们之间还是有一点区别的。
StringBuilder sbd = new StringBuilder("abcde"); StringBuilder sbd2 = new StringBuilder(); StringBuffer sbf = new StringBuffer("abcde"); StringBuffer sbf2 = new StringBuffer(); System.out.println(sbd.length()); System.out.println(sbd.capacity()); System.out.println(sbd2.length()); System.out.println(sbd2.capacity()); System.out.println(sbf.length()); System.out.println(sbf.capacity()); System.out.println(sbf2.length()); System.out.println(sbf2.capacity());
结果为:
5 21 0 16 5 21 0 16
所以,length()代表的是其中内容的长度,capacity()代表的是容器的大小。
PS:其中还发现一个小现象
StringBuilder sbd = new StringBuilder('a'); System.out.println(sbd.length()); System.out.println(sbd.capacity());
结果为:
0 97
如果将'a'换成"a",结果就正常了为:
1 17
跟到源码中看了一下,发现是调用了不同的构造器
public StringBuilder(int capacity) { super(capacity); } //传'a'时被转换成了int,所以length没有长度,而capacity长度是97 public StringBuilder(String str) { super(str.length() + 16); append(str); } //传"a"时是正常的字符串
相关推荐
AbstractStringBuilder 是 StringBuffer 和 StringBuilder 两者的父类,它定义了基本的字符串操作方法,如 length()、capacity()、ensureCapacity() 等。AbstractStringBuilder 类中有两个重要的成员变量,value 和 ...
- Length属性:获取StringBuilder中字符序列的长度。 - Capacity属性:获取或设置StringBuilder对象的容量。 5. StringBuilder在实际应用中的例子: - 在拼接大量字符串时,使用StringBuilder可以有效避免创建...
在本文中,我们将从源码角度分析StringBuffer和StringBuilder的区别,这两个类都是Java中常用的字符串操作类,但是它们之间有什么区别呢?下面我们来一起学习下吧。 继承关系 ----- 在Java中,StringBuffer和...
Java中的`StringBuffer`类和`StringBuilder`类都是用来处理可变字符串的,它们提供了在字符串操作中添加、删除、替换和截取等方法。这两个类的主要区别在于线程安全性,`StringBuffer`是线程安全的,而`...
6. **length()**和`capacity()`:`length()`返回缓冲区当前的字符串长度,`capacity()`则返回当前的容量,即能容纳的最大字符数。如果需要增加容量,可以调用`ensureCapacity()`。 7. **toString()**:当操作完成并...
在这个示例中,我们创建了一个`StringBuffer`对象,然后使用`append`、`insert`、`delete`、`replace`和`reverse`方法展示了其功能。 六、应用场景 `StringBuffer`常用于需要多次修改字符串的情况,特别是多线程...
在多线程环境中,`StringBuffer`比直接使用`+`操作符或`StringBuilder`更推荐,因为它的所有方法都是同步的,避免了线程竞争条件导致的性能问题。 `StringBuffer`类包含了许多实用的方法,这些方法在处理字符串时...
本篇文章将深入探讨`StringBuffer`的原理、用法及其与`StringBuilder`的区别。 1. **基本概念** `StringBuffer`是Java中处理字符串的类,它继承自`AbstractStringBuilder`并实现了`Serializable`和`CharSequence`...
在Java 1.5及后续版本中,`AbstractStringBuilder`被引入作为`StringBuilder`和`StringBuffer`的基础实现类。这个类实现了`Appendable`和`CharSequence`接口,并提供了多种方法来支持字符串的修改操作。 #### 类...
### 常用类的方法集合 #### String 类 **String 类** 在 Java 语言中扮演着极其重要的角色,它是不可...通过上述介绍,我们可以了解到 Java 中常用类的构造方法和成员方法,这些类和方法为日常编程提供了极大的便利。
它们的`length()`方法返回当前长度,`capacity()`返回可分配的最大容量。 输入处理通常通过`Scanner`类完成,如`Scanner in = new Scanner(System.in); String name = in.nextLine();`,这可以从控制台读取用户输入...
在实际开发中,我们还需要考虑线程安全、性能优化等因素,因此在大量字符串操作时,`StringBuilder`(非线程安全但效率更高)往往比`StringBuffer`更受欢迎。而对于日期操作,Java 8引入的`java.time`包提供了更为...