下载此文档

Java:String和StringBuffer的区别.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
Java:String和StringBuffer的区别
String和StringBuffer有何区别?或许我们所熟知的是String是定长而StringBuffer是变长的,这种说法当然是没错的,而事实上,在一般的情况下,String和StringBuffer两者用起来是没有任何区别的。
那么所说的一般情况是指那些情况呢?比如我们定义一个字符变量:
String str = “”;
StringBuffer str = new StringBuffer(“”);
我们只是对这变量进行一些常规的字符操作,比如用来得到form表单提交的字符串等等,在这种情况下,去区分String和StringBuffer的区别是没有任何意义的。那么在什么非一般的情况下来做这种区分有意义呢?
假如有这样一个需求,有至少50万个词,需要你将一个词一个词连接起来(每个词后加回车符),然后写入到文件中,那么此时,你该选择String还是StringBuffer呢?如果这时你还认为像上面所说的那样随便选择一个就行了的话,那么结果很可能就会变得恐怖起来,因为你的程序很可能在运行到一半的时候会挂掉!而你还以为是程序哪里错了,是不是出现了死循环?实际上,你的程序逻辑并没错,你只是错在用了String而不是StringBuffer上。
String的构造函数是这样写的:public String() { = 0; = 0; = new char[0];}
构造出了一个空的字符数组,而StringBuffer却是构造出了一个16个元素的字符数组,如下:public StringBuffer() {super(16);}
而这还并不能说明情况,再看看StringBuffer的append方法:public AbstractStringBuilder append(String str) {if (str == null) str = "null";int len = ();if (len == 0) return this;int newCount = count + len;if (newCount > )expandCapacity(newCount);(0, len, value, count);count = newCount;return this;}
如果当前新的个数(已有的数组长度加上新增加的Str长度)大于了目前数组已有的长度,那么就会调用expandCapacity(newCount);进行扩容,expandCapacity的方法如下:void expandCapacity(int minimumCapacity) {int newCapacity = ( + 1) * 2;if (newCapacity newCapacity) {newCapacity = minimumCapacity;}value = (value, newCapacity);}
扩充规则是:
在已有数组长度上加1,然后乘以2得到一个新的容量值newCapacity,如果新的

Java:String和StringBuffer的区别 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人学习的一点
  • 文件大小13 KB
  • 时间2021-10-09