请问:
当定义一个变量时 如:public int i = 5;虚拟机会开辟一块内存空间存放public int i 然后分配一块int大小的空间指向i
那么 当定义一个方法的时候 如public void f(int i){System.out.println;} 虚拟机又是如何给这个方法进行分配的呢 请各位各抒己见 谢谢
当定义一个变量时 如:public int i = 5;虚拟机会开辟一块内存空间存放public int i 然后分配一块int大小的空间指向i
那么 当定义一个方法的时候 如public void f(int i){System.out.println;} 虚拟机又是如何给这个方法进行分配的呢 请各位各抒己见 谢谢
解决方案 »
- 下面代码运行后,为什么不能把字符串中各个字符输出来?
- System.out.println("已连接!!"); 为啥会出错啊
- 请写出下面代码的输出结果(14)
- 学Java Web ,JavaEE,有什么好书推荐.?
- swing中dragEnter的问题
- j2SE B/S结构 数据库的并发新手问题
- 求教大神!swing和框架的问题
- 新手上路,请多多指教。那里有jbuilder入门方面的书籍下载?
- 好奇怪的问题,帮帮我(本人向来及时结帖给分)
- 请问谁知道从那里(国内网站)可以下载到<<java编程思想>>的源码??很急,谢谢!!!!:-)
- 请教 内部类匿名引用问题
- ****急问Quartz调度问题(有正确答案追加100分) ****
不知道,回去好好研究下<<java编程思想>>.
stack(栈)用于存放局部变量;
heap(堆)用于动态生成内存,new出来的东西
首先,内存分为四个区域:
stack:存放局部变量(方法的形式参数也是局部变量)
head:存放动态创建的东西.new...
datasegement:存放静态变量和字符串常量.
codesegement:代码区int i = 5; //如果她是一个局部变量,就放到stack中,如果是成员变量,就放到codesegement中void f(int i) {System.out.println();}//首先,这个方法是在codesegement中的该方法所属类的代码中.
//当调用这个方法的时候,首先创建形式参数,也就是在stack中创建一个int型的局部变量.值为你传的实参的值.
//到方法体的时候,就按照方法体内继续运行.
//多说一句,关于多态:
//父类引用指向子类对象,父类重写子类方法.这就形成了多态.
//具体的多态中重写的方法的分析如下:
class Parent { public void f(){}}
class Child extends Parent { public void f(){}}
Parent p = new Child();
p.f();//这里会调用Child中的f()方法.
//因为创建这个p实例的时候,虽然是Parent类型,但是,创建的是Child实例,所以,在实例化p的过程中,会把p中的f()方法指向Child在datasegement中的f()方法,所以,调用的时候会
//调用Child中重写了的f()方法.
//不知道是不是说的有点多,总之呢,我感觉如果你能理解多态,这些理解起来就very easy了.
首先在stack中创建这个对象的引用,然后在head中创建这个对象的实体,引用指向这个实体.