new 出来的对象都在堆中进行分配
方法参数的传递都在栈中再具体救不了解了java 的内存关系似乎不用太操心的说
方法参数的传递都在栈中再具体救不了解了java 的内存关系似乎不用太操心的说
解决方案 »
- 关于导入包的问题。 一直困惑着我。
- 在一个方法里写和外面类具有相同名字的类为什么是可以的?
- 如何用java实现监听数据库的功能
- 请问Java 实现类似于Flash有什么好方法?
- 异常 java.lang.NullPointerException ??
- java.sql的问题!
- 关于软件版权问题:自己做的公用函数、过程、公用模块、控件版权是否属于自己?
- 面对这场爱情我该怎么办?
- 请教小问题!
- JFreeChart 柱状图和折线图放在一起,只有左边的轴,怎样做?
- 如何让一个字节的数据取值范围可以是0~255? 在JAVA里byte的范围是-128~127,不符合我的要求的。请问怎么样才能实现呢?
- 新手在学习java,现在不知道该何去何从?请指导
String a="aaa";
String b="bbb";
public void f(){System.out.println("a.f()");}
public void g(){System.out.println("a.g()");}
}首先在栈中定义了A类型的引用变量a,并在堆中实例化了一个A对象,然后让a指向A对象的首地址。
class B extends A{
String a="aaa";
String b="bbb";
public void f(){System.out.println("b.f()");}
public void g(){System.out.println("b.g()");}
}
首先在栈中定义了B类型的引用变量b,并在堆中实例化了一个B对象,然后让b指向B对象的首地址。至于3,同样是产生了一个B对象,只不过现在的引用变量不是B类型的,而是其父类的类型,也就是多态。
存不存它的成员变量,函数名。怎么存?
使用了继承之后,又变成怎么样?
我知道多态的时候,c++中会维护一长vtable表,来判断具体对象的方法是哪个。
但是不知道他的变量的情况。
1.寄存器
2.栈
3.堆
4.静态存储空间
5.常量存储空间
6.Non-RAM存储空间
来看看他们在内存中的位置
把它想像为一个圆的话,上下一分为二,上面为全局区(放静态的变量,方法列表,及字符串池等),下面再一分为二(左右分),左边为对象句柄(引用就是指向这个句柄的),对象句柄实际是一对指针,其中一个指针指向方法列表,一个指向对象(对象是放在右边空间的,数据成员存在于此)具体内容可以参考<java虚拟机规范>这本书