请问:
当new一个对象的时候 不会在堆中为类的非静态方法分配内存空间 只会为对象的属性分配内存 那么如 new A().f()时 我的理解是:在堆中为A对象分配一块内存空间 用这块内存空间去调用f()方法
我不明白 一块内存空间怎么可以去调用方法呢
谢谢
当new一个对象的时候 不会在堆中为类的非静态方法分配内存空间 只会为对象的属性分配内存 那么如 new A().f()时 我的理解是:在堆中为A对象分配一块内存空间 用这块内存空间去调用f()方法
我不明白 一块内存空间怎么可以去调用方法呢
谢谢
解决方案 »
- 父类和子类的实例问题
- java中解压缩操作异常的问题
- 有关Date问题
- Java与C++进行Socket连接,采用基于文本的协议,也就是直接传文本而不是二进制,各位高手有何建议?
- 反转字符窜为什么无效?
- 静态成员方法可以访问同类的成员变量吗?
- 向高手求助(新手)
- sos求救
- swing里面的类的源码我在那里能看到!如openfiledialog!!!
- 怎样用java连接sqlserver数据库,不用jdbc-odbc网桥?
- 我在一个jdialog1中打开了另一个jdialog2,想实现单击jdialog2中的某个按钮可以刷新jdialog1中的表格。怎么实现呢
- ==和equals又混淆了,麻烦解答下
分配到的内存用于存储 new的对象,new A().f()只是通过地址找到那个对象,然后掉用那个对象的方法啊
class A {
public void f(){
String aa = "aaa";//3
System.out.println(aa);//4
}
}
public class Test() {
public static void main(String[] args) {
A a = new A(); //1
a.f();//2
}
}运行Test,程序先找到main方法,进入,顺序执行
执行到第1步时,在内存中开辟一个空间存放A,A类中无static块(如果有,先执行static块中的内容),
再执行构造方法,完了继续第二步,调用a.f(),再进入A类的f()方法,执行第三步,又在内存中开辟一个空间存放"aaa",执行4
微观上(在计算机内部),理解为对象分配空间。