为了账号安全,请及时绑定邮箱和手机立即绑定

关于java物件参照的一个问题

关于java物件参照的一个问题

掌门飞哥 2016-12-05 23:23:43
class Test{ int x=3; void show (){ System.out.println("x="+x); } } public class java1{ public static void main(String [] argv){ Test a,b,c; a=new Test(); b=new Test(); System.out.println("a==b?"+(a==b));//为什么这里显示的结果是false呢?程序运行到这里都是一样数值啊! c=b;//这里是吧b的值给c对吧?还是不是简单地赋值而是别的呢? c.x=10;  //不懂这里,按照道理应该是c.show来使用方法,为啥要c.x呢???我原来慕课中也问过这个问题,别人给的答案 //是这里可以理解为调用,,因为c是Test类的对象,故c既可以使用来调用Test类中的方法,也可以通过查看,修改Test类成员 变量的值,我还是没有听懂,不知为啥c就是Test类的对象呢?请大神给我解答解答,谢谢了!这里不懂,谢谢了,希望详细给我讲讲! System.out.println("c==b?"+(c==b)); System.out.print("a."); a.show(); System.out.print("b."); b.show(); System.out.print("c."); c.show(); } }
查看完整描述

3 回答

?
Finit

TA贡献222条经验 获得超80个赞

 c=b;是引用赋值,打印System.out.println(c==b);结果为true,即b、c指向同一内存地址;既然是同一引用,所以b.show、c.show一样;

然而:

 a=new Test();

        b=new Test();

        System.out.println("a==b?"+(a==b));

a、b为不同对象,不同存储地址,即引用指向地址不同,a==b为FALSE。

望采纳

查看完整回答
反对 回复 2016-12-06
  • 3 回答
  • 0 关注
  • 1337 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信