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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 supertoy 于 2014-8-6 09:09 编辑

+链接字符串这么方便,为什么jvm底层不用StringBuffer去优化+链接字符串呢?

10 个回复

倒序浏览
友好也有弊;
1、字符串在内存中是不变的,这样的结果是提高字符串的实用率,
   如  String a = "abc";   String b = "abc";  a和b指向的是同一个abc;
2、如果实用StringBuffer或StrngBuilder,需要开辟两个空间,增加内容消耗;
3、以前的利弊个人认为是建立在字符串的大小上;
回复 使用道具 举报
会飞De石头 发表于 2014-8-5 13:44
友好也有弊;
1、字符串在内存中是不变的,这样的结果是提高字符串的实用率,
   如  String a = "abc";    ...

1,有道理,但相同的字符串在一个系统不会太多吧?
2,string s = "a"+"b";此时有3个对象,而且使用+【除' a和b指向的是同一个abc'特例外】,会产生>=3个对象空间,而是用stringbuffer就二个对象空间
3,不是太明白- -!
回复 使用道具 举报
这么说吧,在开发中,最多的还是字符串,像我们浏览,交流,全是靠字符串的输入。而且信息两远不是一个a两个b这种范畴,必须加强对字符串的存储管理
回复 使用道具 举报
本帖最后由 icris 于 2014-8-5 14:42 编辑

jvm 优化的比你想的多…
String s = "a" + "b" + "c" ; 和 String s = "abc" ; 在编译器看来是一个意思。
找到一个博客讲的比较详细,chenzehe.iteye.com/blog/1727062 JVM常量池和八种基本数据及字符串
回复 使用道具 举报
icris 发表于 2014-8-5 14:32
jvm 优化的比你想的多…
String s = "a" + "b" + "c" ; 和 String s = "abc" ; 在编译器看来是一个意思。
...

直接进404页面- -!
回复 使用道具 举报
会飞De石头 发表于 2014-8-5 14:01
这么说吧,在开发中,最多的还是字符串,像我们浏览,交流,全是靠字符串的输入。而且信息两远不是一个a两 ...

(⊙o⊙)哦
回复 使用道具 举报
supertoy 发表于 2014-8-5 14:36
直接进404页面- -!

http://chenzehe.iteye.com/blog/1727062
插链接没成功过…
回复 使用道具 举报
no,原来我如此之孤陋而寡闻{:3_52:}
Integer i = 128;
Integer j = 128;
System.err.println(i==j);
竟然是false,
回复 使用道具 举报
supertoy 发表于 2014-8-5 15:09
no,原来我如此之孤陋而寡闻
Integer i = 128;
Integer j = 128;

意外的收获啊
回复 使用道具 举报
supertoy 发表于 2014-8-5 15:09
no,原来我如此之孤陋而寡闻
Integer i = 128;
Integer j = 128;

这可不是字符串 。。。呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马