Java String
来源:互联网 发布:知乎 cqy是什么意思 编辑:程序博客网 时间:2024/05/17 21:54
String vs StringBuffer
Java的String类已经相当完善,但之所以有StringBuffer类的出现是为了弥补String类在其特殊内存机制下在连接操作中出现的确定。
a) String的内存机制概括起来是“一次投入,终身回报”。JVM在运行时,将内存分为堆和栈,前者存放创建时的对象,后者存放方法调用过程中的局部变量或引用,而堆中又开辟了一块内存,称之为字符串常量池,用来存放特定的字符串对象。在创建字符串时,首先查看字符串常量池中是否存在内容相同的字符串独享,若没有,则新建一对象,否则用该引用指向该对象。由此,在字符串常量池中的字符串对象永远不变,当我们实际进行形如
a) String s1 = “a”;
b) String s2 = “b”;
c) s1 = s1 + s2;
的操作时,实际是将s2的内容追加到s1的内容组成新的内容,查找字符串常量池中是否存在与新内容相同的字符串,若有,则将s1引用指向该对象,否则新建之,再将s1指向新对象。由此带来一好处,不管字符串对象多长,其比较速度一样,但在一些大量需要连接字符串的代码中,其性能将大幅下降,因为其中创建了大量无用的中间对象,如:
a) String s =””;
b) For(int i = 0 ; i < 100;i++){
c) S = s + i ;
d) }
连接过程中出现很多中间对象,每执行一次连接操作便诞生一个新对象丢弃一个老对象,造成性能急剧下降。
b) StringBuffer在连接操作时,不产生冗余中间对象,但其创建语法只能通过new操作符进行创建,其append,insert,delete方法可以对StringBuffer对象进行指定操作,然后返回StringBuffer对象,通过toString返回字符串对象。
上一篇:Java大数计算
下一篇:Java正则表达式
- JDK1.6官方下载_JDK6官方下载_...
- MyEclipse6.5下载及注册码...
- Eclipse+MyEclipse的配置
- Eclipse 插件安装、升级和卸载...
- 最新版SWT Designer 6.0 安装,...
- ChinaUnix & ITPUB社区12周年...
- ssh连接出现以下提示,求解...
- 如何扩展MYSQL
- 准备做一个大型门户,用户什么...
- gbk or utf8
- Java 枚举 String-String
- 【Java】【String】String.intern()
- java string
- java String
- Java String
- Java String
- java String
- JAVA String
- java String
- java String
- Java [String]
- java String
- Java String
- Java string
- java String
- java String
- Java String
- java String
- 我们一起学网络(五)——网络层(子网划分和构成超网)
- UIScrollView的属性总结
- Java 断言
- 防SQL注入
- Java大数计算
- Java String
- Java正则表达式
- Java 集合类框架
- Java 自定义Sorted集合
- Java 栈&&队列
- Java static关键字
- Java final修饰符
- The Humble Programmer
- Web图片格式笔记