黑马程序员技术交流社区

标题: 关于字符串的一点点小小问题 [打印本页]

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








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

只知道String不能被改变,而一般都用StringBuffer的说...值是对内存状态和运行效率问题不理解




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