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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫衣侯 中级黑马   /  2013-6-2 22:51  /  1489 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

string a = “hello”+“java” + “我爱你”;
这句话到底创建了几个字符串对象?  以前认为是创建了四个“hello”  “java” “我爱你”和“hellojava我爱你”,但现在又见到一种说法说是只有一个对象那就是“hellojava我爱你”, 不知道这个问题大家都是怎么看的?

评分

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

查看全部评分

2 个回复

倒序浏览
这个过程是创建了5个字符串对象,首先字符串是在方法区中的常量池中的,在常量池中的字符串对象时唯一的,不会重复创建,假如有“hello”这个字符串了,后面再有语句要创建字符串“hello”的,就不会在常量池中在创建新的字符串对象“hello”,而是把已有的“hello”赋给新的对象引用,假如常量池中没有这个字符串,会自动创建一个该字符串对象,string a = “hello”+“java” + “我爱你”;这句话中,先创建3个字符串“hello”,“java”,“我爱你”,然后他们组合成“hellojava”,然后再组合成“hellojava我爱你”这个字符串对象,他们进行地址上的连接,但是原来的字符串对象还是存在的,假如你想再创建一个字符串对象,“hello”同样是用常量池中已有的字符串“hello”。

评分

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

查看全部评分

回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马