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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴光新 黑马帝   /  2013-8-5 21:23  /  1691 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-6 21:18 编辑

  1. public static void main(String[] args){
  2.         String a = "a";
  3.         String b = "b";
  4.         String c = "c";
  5.         String d = "d";
  6.         String abcd = a + b + c + d;
  7.   }
复制代码
该代码执行会产生几个对象?


懒了,复制的String,忘记改变量名,现在已经改了

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

19 个回复

倒序浏览
本帖最后由 牛牛 于 2013-8-5 23:14 编辑

7个~你可以看看基础视频String那一章~ String 不 new 的话会直接在字符池里找有没有这个字符没有就创建有就直接引用  
  • String a = "a";  第 1个
  • String b = "b";  第 2个
  • String c = "c";  第 3个
  • String d = "d";  第 4个
  • String abcd = a + b + c + d;  a+b 第5个  a+b+c 第6个 a + b + c + d第7个

点评

懒了,复制的String,忘记改变量名称,现在已经改了  发表于 2013-8-5 21:50
回复 使用道具 举报
楼主的程序是不是写错了?最后一句编译肯定会报错的!

点评

忘记改变量名称,现在已经改了  发表于 2013-8-5 21:51
回复 使用道具 举报
我感觉程序执行的时候应该会产生5个对象,前边定义了a,b,c,d 4个对象,然后又定义了对象abcd来存储前边四个对象运算的结果,所以整个过程中应该产生了5个对象,只不过由于这里生成的5个对象都是局部的,程序执行完毕后就自动消亡了!

点评

再想想  发表于 2013-8-5 23:07
回复 使用道具 举报
楼主这个代码问题很多啊!
main()中不能有相同的变量;
还有这个什么意思:String abcd = a + b + c + d;
我觉得你可能想问下 String abcd = "a" + "b" + "c" + "d";这句执行以后会产生几个对象吧!!!
三个对象:因为String对象具有只读特性。首先,“a”与“b”连接生成一个String对象,然后该对象再与“c”相连生成另一个String对象,最后再与“d”相连生成一个String对象。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
花心々小土豆 发表于 2013-8-5 22:42
楼主这个代码问题很多啊!
main()中不能有相同的变量;
还有这个什么意思:String abcd = a + b + c + d;

不好意思啊,刚吃了一个西瓜,页面滞留的时间有点长没看到你改了数据。
楼主这问题叼啊!现在应该是七个了,前面四个加上面说的三个。对不对?楼主有权威的解释没有……

点评

正解  发表于 2013-8-5 23:05
解答这样的问题,应该清楚问题后面隐式提问了一个问题“为什么?”  发表于 2013-8-5 23:01
回复 使用道具 举报
本帖最后由 逆袭的风 于 2013-8-5 23:54 编辑

七个对象吧,a,b,c,d,分别对应一个,最后运算时在字符池中未出现过的,则又创建.ab,abc,abcd

点评

好好想一想  发表于 2013-8-5 23:06
回复 使用道具 举报
牛牛 发表于 2013-8-5 21:29
0个~你可以看看基础视频String那一章~

变量名忘记改了,现在已改,你在看看
回复 使用道具 举报
应该是7个对象,String类是不可改变的类,也就是说当String对象的内容一旦发生改变就会产生一个新的对象;
前面四个不用说;String的加法是顺序进行的,当算到a+b会产生一个对象"ab",然后是"ab"+c会产生一个"abc",最后是"abcd"。
个人理解,不知道权威答案,继续关注

点评

绝对正解!答题就应该像你这样~~应该是....因为....  发表于 2013-8-5 23:50

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
牛牛 发表于 2013-8-5 21:29
7个~你可以看看基础视频String那一章~ String 不 new 的话会直接在字符池里找有没有这个字符没有就创建有就 ...

现在我也理解了
回复 使用道具 举报
确实是7个对象,得益于9楼的回答,谢谢大家,学到新知识了{:soso_e192:}
回复 使用道具 举报
花心々小土豆 发表于 2013-8-5 22:51
不好意思啊,刚吃了一个西瓜,页面滞留的时间有点长没看到你改了数据。
楼主这问题叼啊!现在应该是七个 ...

必须正解!楼主高人啊,请问在哪看到这些问题的,还有没有其他的……
回复 使用道具 举报
花心々小土豆 发表于 2013-8-5 22:42
楼主这个代码问题很多啊!
main()中不能有相同的变量;
还有这个什么意思:String abcd = a + b + c + d;

哥们,你没看到我回的这个帖子吗,说的很明白了……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马