首页 新闻 搜索 专区 学院

有关Java中this的疑问

0
悬赏园豆:50 [已解决问题] 解决于 2021-05-20 16:50

请问下this本身是储存在栈内存还是堆内存中?
我的理解是this属于一个引用,它本身存的是指向对象的内存地址,而这个对象储存在堆内存中。但它本身是存在栈内存还是堆内存呢?
因为如果按照引用来理解,就相当于以下代码中的s
Student s=new Student();
那这个s是储存在栈内存中,放的值是new出来的学生对象的内存地址。类比的话this应该也是储存下栈内存中的。可是我询问别人得到的答案是存放在堆内存当中,因此感到非常困惑。

迟睿的主页 迟睿 | 初学一级 | 园豆:157
提问于:2021-05-17 15:41
< >
分享
最佳答案
0

理论上应该是s作为指针在栈上,具体的数据在堆上吧。

收获园豆:50
顾晓北 | 专家六级 |园豆:10794 | 2021-05-17 17:55

我昨天又去问了下别人。他说是因为this在对象的方法中使用,所以开辟的内存在堆内存里面,是这样的吗?

迟睿 | 园豆:157 (初学一级) | 2021-05-18 08:53

@迟睿: 不知道了,得看源码了,是不是类内部的this和Student s = new Student(); 的这个s是两个指针。。

顾晓北 | 园豆:10794 (专家六级) | 2021-05-18 09:12

@顾晓北: 好像是的,this是Student类里面的一个方法用到的。

迟睿 | 园豆:157 (初学一级) | 2021-05-18 09:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册