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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rehan 中级黑马   /  2015-2-13 12:05  /  2147 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new String(new StringBuffer("abcd")),这句话是什么意思?
我new了一个String对象,里面却存放了StringBuffer对象(里面放着“abcd”字符串)。?有点不明白啊,String类不等于StringBuffer类吧?

4 个回复

倒序浏览
本帖最后由 wf111sxwf 于 2015-2-13 13:19 编辑

其实底层走的是将Buffer中的元素 存入一个数组中在搞成字符串,  你其实不需要知道他 底层是怎么做的,  你只需要知道  这行代码的实际结果是创建一个字符串对象 并包含指定Buffer的所有元素, 这就行了 ,如果你 非要看他到底是怎么回事的话   看源码   顺带说 ,String 是一个一旦创建就不可变的 对象,StringBuffer  StringBuilder 你可以把它当做一个容器, 可以将其中的元素 以字符串的形式来表现

评分

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

查看全部评分

回复 使用道具 举报
里面的StringBuffer(“abcd”)对象是创建String对象时传递的所需参数,通过这个参数底层就会构建一个String对象出来供你使用。
回复 使用道具 举报
你看看API,String有个构造函数就是接收StringBuffer对象的,而StringBuffer的初始化值是“abc”,最后String对象的初始值就是“abc”
回复 使用道具 举报
本帖最后由 赵耿 于 2015-2-13 17:11 编辑

你这是说的多态的应用,父类类型的引用变量可以引用子类类型的对象,StringBuffer类是String 类的子类。例如:String st = new SringBuffer("abcd");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马