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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆 黑马帝   /  2013-2-10 03:23  /  1600 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄玉昆 于 2013-2-11 18:13 编辑

String s1 = "abc";  
String s2 = new String("abc");
这两句代码互换位置有什么不同

翻阅相关资料,才发现有些不同点:
对于上面的代码,有一点要说的:就是无论String s2 = new String("abc")在s1前面写还是后面写,s2都会检查StringPool中是否有"abc",
若有,就直接在堆内存中创建一个对象;若没有,则要先在StringPool中创建"abc"后,再在堆内存中创建一个对象。

具体请看我对String的总结:http://blog.csdn.net/shengfeixiang/article/details/8577842


评分

参与人数 1黑马币 +40 收起 理由
杨志 + 40 赞一个! 新年好!

查看全部评分

8 个回复

正序浏览
黄玉昆 黑马帝 2013-2-11 18:12:00
8#
李培根 发表于 2013-2-11 17:59
s2在上面是创建两个对象,在下面创建一个对象。张孝祥老师总结过的。

嗯,你说的没错。我觉得吧,s2很不消停,不管在上下,都会有两个对象产生,“池子”里一个,堆里一个。不过,这是对内存的一种优化,是一个好处。
回复 使用道具 举报
李培根 来自手机 金牌黑马 2013-2-11 17:59:11
7#
s2在上面是创建两个对象,在下面创建一个对象。张孝祥老师总结过的。
回复 使用道具 举报
看看内容。
回复 使用道具 举报
这个隐藏纠结,看看
回复 使用道具 举报
炉海佳 来自手机 高级黑马 2013-2-11 11:50:16
板凳
不回看不到就回吧
回复 使用道具 举报
互相位置有什么不同呢?
回复 使用道具 举报
本帖最后由 刘明杰 于 2013-2-10 18:13 编辑

{:soso_e103:}我也顺便说一下,这是字符串的一个特性。 字符串池吧
回复 使用道具 举报
{:soso_e103:}现在是见证奇迹的时候
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马