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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小马过河 中级黑马   /  2013-12-20 05:52  /  1489 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一点小问题
当用“+”连接的时候。例如“hello”+"world".
这样在内存中具体是个什么样子呢?
都说字符串不可以被改变,那么是指那些没有被改变?
是指原有的hello是一个内存空间,以及world也是另外的一个内存空间?而连接后的helloworld会形成新的一个内存空间吗?
{:soso__17668845216278312300_3:}







评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
FFF 金牌黑马 2013-12-20 10:43:10
沙发
我只看阿狸了,都忘记看你的问题了{:soso_e117:}
回复 使用道具 举报
囧,现在是知其然不知其所以然的状态呢
{:soso__9022334099680207597_6:}
回复 使用道具 举报
不知道楼主有没有听说过“字符串缓冲池”的概念,如果没有可以到                                                               http://bbs.itheima.com/forum.php?mod=viewthread&tid=92424去下付东老师公开课第一天的视频,讲的很具体。
在内存中有一片区域叫“字符串缓冲池”,当你的代码中有String s = "hello",虚拟机实际上是先到“字符串缓冲池”查看之前有没有定义过“hello”,如果没有,才会在“字符串缓冲池”创建一个                    而“hello”+"world".(用引号引起来的),他也是到“字符串缓冲池”去直接引用或者创建,并且jvm在编译时会自动将“hello”+"world"合并为“helloworld”,张孝祥老师说:“hello”+"world"这样写是脱了裤子放屁!  呵呵!

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
迪兰奇迹 发表于 2013-12-20 16:04
不知道楼主有没有听说过“字符串缓冲池”的概念,如果没有可以到                                         ...

只知道String不能被改变,而一般都用StringBuffer的说...值是对内存状态和运行效率问题不理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马