java StringBuffer的length()和capacity()方法比较
2017-02-18 10:41
260 查看
StringBuffer类和String类差不多,都是字符串类,只是StringBuffer在对字符串进行修改时不会生成新的对象,所以效率相对较高,占用空间也小。
length()方法和capacity()方法都是获取StringBuffer的长度。
length()返回字符串的实际长度;
capacity()返回字符串所占容器的总大小。
举例:
可以看到:
1.StringBuffer的的初始大小为(16+初始字符串长度)即capacity=16+初始字符串长度;
2.一旦length大于capacity时,capacity便在前一次的基础上加1后倍增;
例如:
但有如下特殊情况:
当length>capacity时,capacity倍增仍达不到length的长度,这种现象称为跨阶,此时,capacity将根据length的实际大小设置长度,此后将按照直接倍增的方式增长(不将length+1)
length()方法和capacity()方法都是获取StringBuffer的长度。
length()返回字符串的实际长度;
capacity()返回字符串所占容器的总大小。
举例:
可以看到:
1.StringBuffer的的初始大小为(16+初始字符串长度)即capacity=16+初始字符串长度;
2.一旦length大于capacity时,capacity便在前一次的基础上加1后倍增;
例如:
length=1;capacity=17;//初始长度 length=5;capacity=17;// length=17;capacity=17;// length=18;capacity=(capacity+1)*2=36;//第一次倍增 ............ length=37;capacity=(capacity+1)*2=74;//第二次倍增 ............
但有如下特殊情况:
StringBuffer sb3=new StringBuffer("a"); System.out.println("length="+sb3.length());//length=1 System.out.println("capacity="+sb3.capacity());//capacity=17; System.out.println("--------------------"); sb3.append("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); System.out.println("length="+sb3.length());//length=20; System.out.println("capacity="+sb3.capacity());//capacity=40;
当length>capacity时,capacity倍增仍达不到length的长度,这种现象称为跨阶,此时,capacity将根据length的实际大小设置长度,此后将按照直接倍增的方式增长(不将length+1)
相关文章推荐
- Java StringBuffer.setLength()方法
- java标准库中ByteBuffer转String的方法
- java中String的常用方法 1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars);
- Java 比较String对象的方法
- Java——String和StringBuffer/StringBuilder字符串的常用方法
- Java基础知识-String StringBuffer StringBuilder比较
- java中判断string是否为空的三种方法——效率比较
- StringBuffer setLength 和 append对capacity的影响
- java中的String的isEmpty和length方法测试
- Java - 数组有没有length()方法?String有没有length()方法?
- Java中String StringBuffer常用方法
- Java StringBuffer.delete()方法
- java的String的equals方法和"=="比较
- Java编程-String StringBuffer StringBuilder三者比较
- JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较
- java基础问题-----数组有没有length()这个方法? String有没有length()这个方法
- Java里String的length方法
- java.lang.StringBuffer.append(char[] str)方法实例
- 【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
- JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较