黑马程序员技术交流社区

标题: 方法区 [打印本页]

作者: 史政法    时间: 2013-5-25 12:05
标题: 方法区
请详细介绍下方法区,,,以及下列这个问题:
  1. 这三句话在内存中是怎样运行的,方法加载到哪里?是Fu类的方法区中,还是Fu类和Zi类的方法区中各有一份?然后调用方法去哪里调用???内存中调用的过程是什么样的?

  2. class PersonFu
  3. {
  4.         public boolean equals (PersonFu p)
  5.         {
  6.                 return (this == p);
  7.         }
  8. }

  9. class PersonZi extends PersonFu
  10. {
  11. }

  12. class Demo
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 PersonZi pz1 = new PersonZi();
  17.                 PersonZi pz2 = new PersonZi();
  18.                 System.out.println(pz1.equals(pz2));
  19.         }
  20. }
复制代码

作者: 神之梦    时间: 2013-5-25 14:56
待高手解答
作者: 逸盏清茶    时间: 2013-5-25 15:00
等高手。。。
作者: 薛淑凯    时间: 2013-5-25 15:02
本帖最后由 薛淑凯 于 2013-5-25 15:06 编辑

我觉得既然父类的方法既然可以在子类中用this调用,应该在方法区子类中应该也有这个方法,前提是子类没有复写。查了查,有些人说用this调用时候如果本类中没有就会去父类中找,这样的话就刚好相反了。不明白了,等待明白人
作者: 张龙欢    时间: 2013-5-25 15:17
PersonZi pz1 = new PersonZi();
首先main进栈,当执行到上面那句话时,main方法中开辟一个空间Pz1,然后new PersonZi()的执行就在堆内存中创建了一个对象并把地址值赋给了Pz1.第二句同上,当执行到第三句中的pz1.equals(pz2)时,equals()方法进栈,因为它们是两个不同的对象,所以地址不同,结果输出的是false!
作者: Super_Class    时间: 2013-5-25 15:46
有的资料上翻译是方法区。

也有的地方翻译为 静态区或者代码区。

这个我个人感觉翻译为静态区更为合适。方法的调用会使得方法进栈。完成操作后进行弹栈。

                内存的划分:
                                |--寄存器
                                |--本地方法区
                                |--方法区
                                        存储静态变量(类变量)和方法
                                |--栈内存
                                        存储的都是局部变量
                                |--堆内存
                注-->注-->        存储的是对象(数组也是Object对象)       
                                        |---堆里边的变量在创建的时候都会默认初始化
                                                boolean初始化为false
                                                int类型初始化为0
                                        |---堆内存中的对象使用过,        就会变成垃圾。
                                        JVM的垃圾回收机制会不定时启动,回收堆内存的垃圾
                                        |---数组角标越界,编译不会出错,运行出错。
                                                当引用没有任何实体指向时,会发生空指针异常。
               




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2