A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ccyznhy 中级黑马   /  2013-8-18 22:00  /  1036 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 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(){
                //内容体
    }

}



评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

1 个回复

倒序浏览
根据你的问题,我的分析如下。
首先,方法是指令,都存储在stack中,而对象都保存在heap中。
第一种情况下,当class被ClassLoader加载进入虚拟机之后,所有的方法指令都被存放在了stack中,主函数开始执行,程序要先在内存中new一个Use对象,然后再通过传递stack中非静态方法的指令码的地址调用该对象中的非静态方法。
第二种情况是,当class被ClassLoader加载进入虚拟机之后,所有的方法指令都被存放在了stack中,主函数执行,程序可以直接执行静态方法的指令。
内存占用来说,肯定是new对象的情况会占用的多。稳定性和速度不敢断言,需要看情况。但是最重要的是,我们学习的是面向对象,不是面向过程,如果功能只是写成一个方法而不是造一个类,而这个类就有解决问题的方法,那还叫面向对象吗?是吧

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马