黑马程序员技术交流社区
标题:
下面这条语句一共创建了多少个对象
[打印本页]
作者:
谢毅
时间:
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