求大神 帮解释java程序 在线等 !!!~~急!!
1个回答
展开全部
其实很好理解呀
你的程序里面重写了equals方法:颜色相同,成熟类型相同 则返回true;
那么:
1>a和b的颜色都是红色,而且都成熟了(true),所以 a.equals(b)当然就返回true了;
2>符号‘==’比较的是地址,a和b虽然都是同一个实体的,但是他们都是通过不同的new出来的,也就是说a和b都分配了地址,那么他们的地址就不相同,不相同的话 a==b就会是false;
3>c=a的意思是把c的地址指向a的地址,那么也就是说c和a的地址是相同的,所以他们的颜色是相同的,成熟类型也是相同的,那么当然a.equals(c)返回的就是true
4>在3中说了c=a是把c的地址指向a,那么a和c的地址当然是相同的了,那么a==c就当然是相同的了。
给你打个比方:
a和b的双胞胎(长得一模一样),
1》a.equals(b)->你可以粗暴的理解成a和b像不像 ,既然一模一样像不像呢?当然像了,所以返回true;
2》a==b->a是b吗?虽然他们是长得一模一样的双胞胎,但是他们是两个人,不是同一个人,所以返回false;
现在a去给自己弄了一个克隆人c
3》c和a像不像?必须像呀 所以返回true
4》c和a是同一个人吗?既然c是a的克隆人,那当然是呀!! 所以也返回true
你的程序里面重写了equals方法:颜色相同,成熟类型相同 则返回true;
那么:
1>a和b的颜色都是红色,而且都成熟了(true),所以 a.equals(b)当然就返回true了;
2>符号‘==’比较的是地址,a和b虽然都是同一个实体的,但是他们都是通过不同的new出来的,也就是说a和b都分配了地址,那么他们的地址就不相同,不相同的话 a==b就会是false;
3>c=a的意思是把c的地址指向a的地址,那么也就是说c和a的地址是相同的,所以他们的颜色是相同的,成熟类型也是相同的,那么当然a.equals(c)返回的就是true
4>在3中说了c=a是把c的地址指向a,那么a和c的地址当然是相同的了,那么a==c就当然是相同的了。
给你打个比方:
a和b的双胞胎(长得一模一样),
1》a.equals(b)->你可以粗暴的理解成a和b像不像 ,既然一模一样像不像呢?当然像了,所以返回true;
2》a==b->a是b吗?虽然他们是长得一模一样的双胞胎,但是他们是两个人,不是同一个人,所以返回false;
现在a去给自己弄了一个克隆人c
3》c和a像不像?必须像呀 所以返回true
4》c和a是同一个人吗?既然c是a的克隆人,那当然是呀!! 所以也返回true
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询