当你只想调用一个方法,但是不想创建一个对象时,可以用static方法。
通常将一些公用的函数库做成static类和方法

解决方案 »

  1.   

    static方法不能调用类中非static的变量
      

  2.   

    个人认为static最常用在两个方面:
    1.一些工具类的方法
    2.需要获得单一实例的类中
      

  3.   

    大家说得都是表面现象,能否说一下,与实例化一个对象,然后调用非static方法比较,有什么有点,有什么缺点,比如,我知道在多线程的时候,如果用static方法,调用的时候,容易发生冲突,还有呢
      

  4.   

    static方法的内容是唯一的,无论产生多少的对象,内容始终不变,从这个意义上说,它与类的存在同级别,因此可以直接使用类名调用static方法。同时该方法只能使用同为static类型的数据,比较节省存储空间,这也算是一个优点吧。
      

  5.   

    小弟谈点愚见,静态方法占用的存储空间小,因为无论多少对象访问静态方法,实际上都只是最开始创建的静态方法所在的类的那个实例,不用创建新的对象。因此如果是比较通用的方法,最好用静态方法,比如DriverManager.getConnection()方法,其次如果不想让其他对象构造某个对象也可以使用静态方法,如
    Class a
    {
    private a(){}
    public static a getA()
    {
     return new a();
    }
    }
    这样保证其他任何对象不能访问构造函数,当然如果构造函数中有自变量这种方式就更有意义一些,也就是说,如果想使用该对象,必须按照该对象的特定的方式进行构造,如下:
    Class a
    {
    String b;
    private a(String b)
    {
      this.b=b;
    }
    public static a getA()
    {
     return new a("a String");
    }
    }
    小弟说的不好,希望起到抛砖引玉的作用
      

  6.   

    static方法可以在类没有被实例化之前被调用,一般用做库函数.
    如java.Math里的方法大多是static: max(), abs()等
    我认为这样做有点象c++力的全局函数,虽然不是很oo,但还是很方便和符合逻辑的