请教object.getClass()的问题

binghanbacon 2016-01-25 04:56:20

我知道i ==t //true 这很好理解,都是指向栈里的同样的值。a == b //false 这也好理解,指向堆里不同的区域。但是c == d //true这是为什么,我很想知道getClass()返回的这个class类到底是存放在什么地方,为什么栈里的c和d值都是一样的。

...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xen0Ph0n 2016-01-26
  • 打赏
  • 举报
回复
引用 3楼我是你的主体 的回复:
[quote=引用 1 楼 xufeijava 的回复:] 我的理解是,零时变量是存在栈里的,对象时存在堆中的,i,t,a,b都是对象的引用地址值,所以在栈中的值不同,但是getClass()取的是对象本身,两个对象都是class A,所以结果是true
引用 1 楼 xufeijava 的回复:
我的理解是,零时变量是存在栈里的,对象时存在堆中的,i,t,a,b都是对象的引用地址值,所以在栈中的值不同,但是getClass()取的是对象本身,两个对象都是class A,所以结果是true
两个对象都是class A 这我知道,但是我想知道c和d的值到底代表了什么意思,是一个引用地址吗,如果是引用地址的话,到底指向何方,也就是A.class 这个类到底是被jvm存放在内存的什么地方。 [/quote]c和d都是引用,存在堆中,引用的是同一个java.lang.Class对象; 类在加载到内存的过程中jvm会给每一个类的class字节码创建一个Class对象,这个对象就是代表这个类,Object类的getClass()方法就是获得这个对象的方法,因为你这两个对象的类都是A,所以它们get来的class都是同一个对象; 这里的知识你可以找本书看看关于类的加载和反射部分的内容。
binghanbacon 2016-01-25
  • 打赏
  • 举报
回复
引用 1 楼 xufeijava 的回复:
我的理解是,零时变量是存在栈里的,对象时存在堆中的,i,t,a,b都是对象的引用地址值,所以在栈中的值不同,但是getClass()取的是对象本身,两个对象都是class A,所以结果是true
引用 1 楼 xufeijava 的回复:
我的理解是,零时变量是存在栈里的,对象时存在堆中的,i,t,a,b都是对象的引用地址值,所以在栈中的值不同,但是getClass()取的是对象本身,两个对象都是class A,所以结果是true
两个对象都是class A 这我知道,但是我想知道c和d的值到底代表了什么意思,是一个引用地址吗,如果是引用地址的话,到底指向何方,也就是A.class 这个类到底是被jvm存放在内存的什么地方。
java足迹 2016-01-25
  • 打赏
  • 举报
回复
我的理解是,零时变量是存在栈里的,对象时存在堆中的,i,t,a,b都是对象的引用地址值,所以在栈中的值不同,但是getClass()取的是对象本身,两个对象都是class A,所以结果是true
scmod 2016-01-25
  • 打赏
  • 举报
回复
c跟d都是A.class

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧