A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李双 中级黑马   /  2014-11-23 11:52  /  944 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String 和 string 有什么区别? StringBuilder 拼接字符串,和 string拼接字符串 有什么不同?

3 个回复

倒序浏览
String和string?
java好像只有大写S的String
C#中有string。
回复 使用道具 举报
貌似只有String类,另外String拼接的字符是保留原来字符串对象的,占内存。StringBuffer的拼接字符是改变原字符串。节省内存
回复 使用道具 举报
在用String类对象直接拼接时,表面看起来只是一个+号就连接了,但实际上JVM会创建一个临时的StringBuffer类对象,并调用其append()方法完成字符串的拼接,
这是因为String类是不可变的,拼接操作不得不使用StringBuffer类(并且--JVM会将"You are nice."和"I love you so much."创建为两个新的String对象)。之后,再将这个临时StringBuffer对象转型为一个String,代价不菲!可见,在这一个简单的一次拼接过程中,我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,和最后将StringBuffer转型成为的String.

          而如果直接使用StringBuffer类,程序将只产生两个对象:最初的StringBuffer和拼接时的String("I love you so much."),也不再需要创建临时的StringBuffer类对象而后还得将其转换回String对象。

          可以想象,当我们的字符串要被循环拼接若干段时,用String类直接操作会带来多少额外的系统开销,生成多少无用的临时StringBuffer对象,并处理多少次无谓的强制类型转换哪。



好吧,以上是复制粘贴的= =~
qq群:211789156,很多在黑马的,想去黑马的同学一起学习交流的地方,欢迎加入,有400人了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马