Java内存中没有实例化一个类的时候,该类的成员变量放在哪?对象又是怎么引用方法的? 10
以前看高淇老师的视频的时候,高老师讲到:方法区中存放这类的信息:包括成员变量和方法。new的时候类似于复制该类,把这个类的模板放到堆中,然后由这个new出来的对象引用。刚...
以前看高淇老师的视频的时候,高老师讲到:方法区中存放这类的信息:包括成员变量和方法。
new的时候类似于复制该类,把这个类的模板放到堆中,然后由这个new出来的对象引用。
刚刚看到毕向东老师的视频,视频里讲到:
方法区中只存放方法,成员变量是随着对象的实例化而存放在对象中,就是堆中。
那我想问一下,在没有实例化的时候,这些成员变量放在哪呢?
另外,对象实例化的时候,只把成员变量存到对象,方法并不存放么?
那栈中的对象引用堆中存放的对象信息,而通过对象调用方法的时候怎么调用?对象引用的信息只有成员变量,怎么能引用到方法呢?
讲的可能有点乱,不知道各位能不能看懂。感觉两位老师讲的完全不一样,所以想问一下正确的存取方式。 展开
new的时候类似于复制该类,把这个类的模板放到堆中,然后由这个new出来的对象引用。
刚刚看到毕向东老师的视频,视频里讲到:
方法区中只存放方法,成员变量是随着对象的实例化而存放在对象中,就是堆中。
那我想问一下,在没有实例化的时候,这些成员变量放在哪呢?
另外,对象实例化的时候,只把成员变量存到对象,方法并不存放么?
那栈中的对象引用堆中存放的对象信息,而通过对象调用方法的时候怎么调用?对象引用的信息只有成员变量,怎么能引用到方法呢?
讲的可能有点乱,不知道各位能不能看懂。感觉两位老师讲的完全不一样,所以想问一下正确的存取方式。 展开
2个回答
展开全部
比较严格来说方法区存放的是类信息,静态变量,和final修饰的常量。没实例话的局部变量都Java栈中。
更多追问追答
追问
你的意思是成员变量也存在于方法区中?
追答
不在,在Java栈里。都属于运行时数据区:包括方法区,堆,Java栈,PC寄存器,本地方法栈。堆和栈两个概念,提的较多,比较重要。你说的成员变量一般指局部变量就在栈中,static,final修饰的时候就加载到方法区,栈中也只能存放基本变量,其他复杂类型存放的是指向堆的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |