黑马程序员技术交流社区

标题: 面试题,求解答? [打印本页]

作者: 生牛排    时间: 2016-7-24 00:36
标题: 面试题,求解答?
String a=new String("b");创建了几个object对象啊
作者: 生牛排    时间: 2016-7-24 00:39
大神解救解救吧
作者: 657324    时间: 2016-7-24 00:53
2个   一个常量  一个堆内存中也有
作者: 生牛排    时间: 2016-7-24 01:00
非常感谢
作者: 自由人3738    时间: 2016-7-24 09:01
3个  ,第一个是"b"在常量池有一个, new创建对象的时候在对内存,底层依耐StringBuffer 创建对象,利用append添加"b"的一个副本,因为StringBuffer和String不是同一个对象,所以StringBuffer要调用toString方法转换成String对象,所以是3个
作者: 新晋猿工    时间: 2016-7-24 09:21
有用到StringBuffer吗?
作者: showJiang    时间: 2016-7-24 10:43
两个,一个“b”,存在于方法区常量池中,new String("b"),存在于堆内存中。可以理解为堆内存对象是方法区对象的拷贝。
作者: yuxing    时间: 2016-7-24 11:30
自由人3738 发表于 2016-7-24 09:01
3个  ,第一个是"b"在常量池有一个, new创建对象的时候在对内存,底层依耐StringBuffer 创建对象,利用append ...

public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }

这个是对String类型的有参构造,哪来的StringBuffer~>\?
作者: 自娱自乐的朋朋    时间: 2016-7-24 12:51
两个0000000000000000000。。。。。。。。
作者: 自由人3738    时间: 2016-7-24 16:43
我不是说了底层吗
作者: q123123    时间: 2016-7-24 22:49
两个,一个“b”,存在于方法区常量池中,new String("b"),存在于堆内存中。可以理解为堆内存对象是方法区对象的拷贝。好像是这样的
作者: Petter    时间: 2016-7-24 23:32
String a = new String("b");  区别于  String a = "b";   视频上就讲了这个.   没看到创建多少Object类对象.问老师吧




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