黑马程序员技术交流社区

标题: 下面这条语句一共创建了多少个对象 [打印本页]

作者: 谢毅    时间: 2013-1-18 22:32
标题: 下面这条语句一共创建了多少个对象
本帖最后由 谢毅 于 2013-1-19 12:56 编辑

String s="a"+"b"+"c"+"d";



作者: 黑马斯巴达    时间: 2013-1-18 22:45
一个。。加号就是连接符吧。把它们都连接在一起啦。。就是一个abcd对象
作者: 高浩    时间: 2013-1-18 22:59
这样的定义,将这个字符创放在了常量池中
String s=new String("ss");既在堆内存中创建了对象,开辟了空间,还在常量池中声明了“ss”
作者: txl    时间: 2013-1-18 23:15
就一个String对象,因为=号后面都是常量,运行时等号后面直接成为了"abcd",s则指向了"abcd"
作者: 贾文泽    时间: 2013-1-19 01:37
1个
这句话在class文件中就相当于String s = "abcd"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个

作者: 黄金龙    时间: 2013-1-19 10:40
String s="a"+"b"+"c"+"d";
一共是四个吧..
每次string的创建引用是不同的.....
就等于这样...
String s="a";
String s="ab"+"c"+"d";
String s="abc"+"d";
String s="abcd";

作者: 刘岳林    时间: 2013-1-19 10:45
1个,String s = "abcd"
作者: 丁强强    时间: 2013-1-19 12:10
1个  字符串abcd
作者: 朱玉玺    时间: 2013-1-19 22:01
其实,你这个问题问的太笼统了,你根本就没法判断这个过程创建了几个对象(你说的是对象,不是String类对象)。如果这个代码之前,常量池中如果有了“abcd”串,那么它只是添加了个引用,没有创建String类对象。在执行+连接符运算时,是调用的StringBuilder的append方法,这个过程肯定创建了StringBuilder对象,但具体过程是怎么实现的,看源代码才能清楚。至于这个调用实现过程又创建了几个对象,鬼晓得~




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