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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String str = new String("xy");创建了几个对象?
答案是两个,一个是对象,一个是对象的引用,但不明白那对象的引用到底是什么意思,能否对于这句代码能否详细解释一下,困扰的我厉害,谢谢大家


String str0 ="ab";
String str2 ="abc";
String str6=str0+"c";
System.out.println(str2==str6);对于这段代码,因为有变量所以编译器无法优化,在运行时,会有新的String地址空间的分配,而不是指向缓冲池中所以结果false,对于他的解释,还是不太明白,还望各位能解答一下,谢谢大家

8 个回复

倒序浏览
内存中分为堆内存和栈内存。
对象引用都在栈内存中,而对象的实体在堆内存中,引用与实体存在着映射的关系,一个实体可以被多个引用所指向,
==比较的是否是同一个对象,equals比较的是两个对象的引用的值是否相等。
回复 使用道具 举报
使用new调用了String类的上面那个构造器方法创建了一个对象,并将它的引用赋值给了str变量。同时我们注意到,被调用的构造器方法接受的参数也是一个String对象
回复 使用道具 举报
==比较的是两个字符串的地址哈希值吧,肯定是false了,要是equals的话就可以了。String类复写了Object类的equals的方法,比较的是两个字符串的“值”是否一样,而不在比较哈希值了。
回复 使用道具 举报
zhuohong_xiao 来自手机 中级黑马 2014-9-12 02:40:59
报纸
楼上的OK啦。
回复 使用道具 举报
zhuohong_xiao 来自手机 中级黑马 2014-9-12 02:45:07
地板
我想说一句。对象的引用不是对象吧。String s;与String s=new String();这俩s含义是不同的吧。
回复 使用道具 举报
cherry@cookie 来自手机 中级黑马 2014-9-12 07:07:02
7#
发现我也不会
回复 使用道具 举报
每个对象都会有一块存储空间,对象的引用,我个人理解指的是指向对象开辟空间时所开批出来的空间地址值,而不是对象本身
回复 使用道具 举报
不系之舟王 来自手机 中级黑马 2014-9-12 08:40:35
9#
我也不会,加油!努力学吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马