黑马程序员技术交流社区

标题: 既然使用+链接字符串不好,那为什么jvm不优化 [打印本页]

作者: supertoy    时间: 2014-8-5 13:02
标题: 既然使用+链接字符串不好,那为什么jvm不优化
本帖最后由 supertoy 于 2014-8-6 09:09 编辑

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

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

作者: supertoy    时间: 2014-8-5 13:53
会飞De石头 发表于 2014-8-5 13:44
友好也有弊;
1、字符串在内存中是不变的,这样的结果是提高字符串的实用率,
   如  String a = "abc";    ...

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

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

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

(⊙o⊙)哦
作者: icris    时间: 2014-8-5 14:46
supertoy 发表于 2014-8-5 14:36
直接进404页面- -!

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

意外的收获啊
作者: 会飞De石头    时间: 2014-8-6 16:23
supertoy 发表于 2014-8-5 15:09
no,原来我如此之孤陋而寡闻
Integer i = 128;
Integer j = 128;

这可不是字符串 。。。呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2