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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pzfpang449 中级黑马   /  2013-2-5 17:52  /  1381 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-2-6 15:32 编辑

下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"

我觉得应该有 a  abcd 2个,但是也有人说是四个,七个,还有一个五个的

大家来讨论讨论吧

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

4 个回复

正序浏览
LZ的意思是 “a” “b”分别生成了一个对象。
而“a”+“b”又生成了例外一个新的对象。
对于编译器我不大理解,但如果这样创建这么多对象,是否很浪费空间。
回复 使用道具 举报
你在String s="a"+"b"+"c"+"d"中定义的s仅仅是一个变量,是想一个变量能够指向几个内存地址呢?
我认为是一个,既然只有一个内存地址的话,那么不管你后面存在多少个字符串,都赋给了s,那么也就是说只有一个对象。
我的意思是,可以从s的角度看,变量s 最终只能指向一个对象,那么后面的"a"+"b"+"c"+"d"就是一个对象。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报

String s1 = "a"+"b"+"c"+"d";和String s2 = "abcd";比较,结果为真,说明s1和s2指向同一个地址

String s2 = "abcd";和(String s3 = "a";String s4 = s3+"b"+"c"+"d";)比较,结果为假,
说明s1创建的过程中不存在先有个"a"对象然后再+其他对象的情况,
所以String s1 = "a"+"b"+"c"+"d";这个过程中只创建了一个对象.



评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
对象是什么:
对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。 万物皆对象
所以,你要研究那个,就可以把那个看成是一个对象。至于到底有多少个对象,这貌似很深奥的样子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马