在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"时是正常的字符串
相关推荐
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...
String ,StringBuffer与StringBuilder的区别
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
java中StringBuilder,StringBuffer,Vector的区别
String,StringBuilder,StringBuffer
javase部分String的相关基础知识,String的构造方法总结比较以及各自的应用场景(代码举例),常用的容器类StringBuilder和StringBuffer的关系比较(图示)以及两者的区别联系和具体哪中场景下用哪个类。
String、StringBuilder以及StringBuffer的区别
关于String、StringBuilder、StringBuffer的本质区别,
主要介绍了Java 中String StringBuilder 与 StringBuffer详解及用法实例的相关资料,需要的朋友可以参考下
主要针对Java中两个常用的操作字符串的类 StringBuilder和StringBuffer进行源码分析,感兴趣的小伙伴们可以参考一下
StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议...
主要介绍了java String、StringBuilder和StringBuffer的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
String及StringBuffer和StringBuilder的区别
我们先用一张表格来回顾一下Java中String,StringBuilder,StringBuffer关于值可变性、线程安全性、时间性能排序、常用场景等主要区别。见下表: 数据类型 值可变性 线程安全性 时间性能排名 常用场景 String...
目录StringStringBuffer与StringBuilder总结 String ...StringBuffer与StringBuilder 这两者基本相似,都是可变字符串对象,主要区别为线程是否安全。 总结 最后,引用菜鸟教程下的总结以及相关评论: S
主要介绍了Android 中StringBuffer 和StringBuilder的常用方法及区别介绍,需要的朋友可以参考下