在项目中,对于频繁使用的方法,使用static修饰会提高效率吗?
请各位阐述下使用静态方法的好处。

解决方案 »

  1.   

    这个我清楚,我想知道它能够是程序提高效率吗?
    static 修饰变量也好,方法也好,都应该慎用吧。
      

  2.   

    主要是看你的需要,即使是频繁使用,但方法属于对象而非类的话,也不能改用static修饰.
      

  3.   

    就是直接生成实例,不再随便new
      

  4.   

    正如LZ所说的,在使用频繁的方法中使用
    可以这样理解使用static修饰的成员不再归对象所以,而是属于类   可以理解为是共有的
    也就说只要通过类名就可以访问,不需要耗费资源反复创建对象
    因为在程序第一次加载的时候就已经在内存中了,直到程序结束该内存才会释放
    如果不是static修饰的成员在使用完之后该内存就会被回收
    所以说static要慎用,根据实际情况而定
      

  5.   

    如果这个方法是作为一个工具来使用,就声明为static,不用new一个对象出来就可以使用了,比如连接到数据库,我声明一个getConnection()的方法,就定义为静态的,因为连接到数据库不是某一个对象所特有的。它只作为一个连接到数据库的工具。至于提高效率的也未必,要看具体的方法的用处,去定义这个方法是不是静态的。
      

  6.   

    static对于类来说只有一份...这样的好处很多吧....
    比如说调用方法就不需要new了
    直接用类调用就可以了
      

  7.   

    不建议使用太多,只要是公用的方法,属性,类常常用到才申明为static其它最好不用,内存用的太多影响其它业务
      

  8.   

    还是要看具体情况的。如果是工具方法,方法只为了表示属于这个类,执行时候和具体对象没什么关系的,就用static修饰,像java类库中,Integer类的getInteger()方法就是这样。如果本对象要参与方法的操作,那就该让他附属于对象,而不是类了。
      

  9.   

    stati修饰表示静态的,在类加载时虚拟机就会把
    它放到方法区。被本类以及本类所以实例共用的
    如果一个方法是所有实例公共的,那么声明为static
    能够节省空间,否则每个实例初始化时方法都要分配到
    内存
      

  10.   

    减少了不同实例调用时,对内存的开销,以及构造对象时的消耗。
    但从另一方面将,如果你new了一个,然后一直用他来调用,那么你知道有什么后果吗?
    在多线程里面,多个线程共用一个类的实例,是很危险的。
    如果你的方法不依赖类的实例,那么他就是一个static得。
      

  11.   

    您的意思是我创建了该类的对象,然后用对象调用该类的静态方法吗?想您请教另外的问题,下面的as类中有个dayArray,它也会被频繁使用public class DayModel extends BasicModel
    {
    [Bindable]
    private static var _instance:DayModel;

    public static function getInstance():DayModel
    {
    if(_instance == null){
    _instance = new DayModel();
    }
    return _instance;
    }

    [Bindable]
    public var dayArray:Array=new Array();//如果用static修饰会占用内存吗?还是最好不用new,不new的话会报空指针异常。不知您有什么建议。
    }
      

  12.   

    不用new一个对象,节省堆内存空间
      

  13.   

    用static肯定可以洁身时间啊,可以节省内存,下次调用时,就相当于把原还输的代码直接放入...
      

  14.   

       好处肯定是有的:首先,用static修饰的类方法,不仅可以用类声明的对象调用而且可以直接用类名调用;至于对内存的开销,我想那只是针对类的成员变量而言吧;
      

  15.   

    static 修饰类的属性时,这个属性所有成员共享,内存只分配一次,多线程的时候要注意了,很可能不是按照你设想的去执行的.
    大多使用都与final配合,表示一个常量.static 修饰类方法的时候,直接用类名调用.非静态方法使用实例去调用,实例本身是一个隐藏的参数被传递给非静态方法,也就是在非静态方法中的this,而静态方法没有this.
    从面向对象的角度看,static失去了继承,多态.
    无论是静态方法还是非静态方法,在内存中都只分配一份内存,也就是所占内存空间大小是一样的.
    工具类中,使用static修饰方法较多.