黑马程序员技术交流社区
标题:
一个突发奇想的问题!!!!!!
[打印本页]
作者:
ccyznhy
时间:
2013-8-18 22:00
标题:
一个突发奇想的问题!!!!!!
本帖最后由 黄兴旺 于 2013-8-23 16:41 编辑
在调用方法时,是创建一个类包含一个非静态方法好,还是在主函数所在的类中创建一个静态方法好?只能二者择其一。要从运行速度,创建类所占的内存,运行稳定性等多方面进行考虑?最终得出结论,希望大家予以解决!
程序如下:
(1)
class Main{
public static void main(String[] args) {
new Use().use();
}
}
class Use{
public void use(){
//内容体
}
}
(2)
class Main{
public static void main(String[] args) {
use();
}
public static void use(){
//内容体
}
}
作者:
gulup
时间:
2013-8-18 23:46
根据你的问题,我的分析如下。
首先,方法是指令,都存储在stack中,而对象都保存在heap中。
第一种情况下,当class被ClassLoader加载进入虚拟机之后,所有的方法指令都被存放在了stack中,主函数开始执行,程序要先在内存中new一个Use对象,然后再通过传递stack中非静态方法的指令码的地址调用该对象中的非静态方法。
第二种情况是,当class被ClassLoader加载进入虚拟机之后,所有的方法指令都被存放在了stack中,主函数执行,程序可以直接执行静态方法的指令。
内存占用来说,肯定是new对象的情况会占用的多。稳定性和速度不敢断言,需要看情况。但是最重要的是,我们学习的是面向对象,不是面向过程,如果功能只是写成一个方法而不是造一个类,而这个类就有解决问题的方法,那还叫面向对象吗?是吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2