有的情况下必须用static
比如main()方法有的情况下可以不用static
比如一个类中独立的方法
可以先new 一个类的实例,再调用这个方法
这种情况对把这个方法做成static的呢?还是做成普通的如果作成static的方法,有什么不好的地方------请发言。

解决方案 »

  1.   

    静态方法不能直接调用普通方法,即使在同一各类里,也必须首先实例化该类,这就造成很大的不便。同时也破坏了对象封装的完整性。
    使用静态方法的情况应该是:
    1、main方法
    2、工具性质的类,不需要类对象保存状态。
    例如:public class tools{
    public static String intTostr(int v){...}
    }
      

  2.   

    如果你的方法与类相关而不与实例相关(就是new出多个实例你想得到的结果都一样),就可以将其声明为静态的.但是如果你的类需要被继承,那么如果方法被定义成静态的后,如果字类覆盖其方法,那么该字类如果上溯造型后,将不会得到正确的结果.这种情况不能将其声明为静态的.
      

  3.   

    static方法是独立于对象而存在的,也就是类加载器加载雷以后你就可以直接调用(可以通过类名来进行),也就是该方法只是依附在类存在,而不是依赖对象而存在,所以在使用这些方法的时候,你不用new对象就可以使用,还有一个很大的特点是全局唯一,也就是你再任何地方的程序对它的引用都是访问同一个方法或是对象,如果你用static的对象,那么所有程序访问的都是一个对象,任何地方做了改变都会影响该对象,而如果是new出来的,那几完全不一样了。具体是否要采用static方法,我觉得应该根据对象设计,如果是和对象没有直接联系或是交互,或是需要全局唯一,都可以采用static方法,对方法和对属性都是一样的。static方法访问也是比较快的,比对象的方法要快,不用生成对象,就可以调用,但千万记住了,这不意味着所有的方法都采用static。需要根据实际情况来使用。
      

  4.   

    对性能有不有影响?
    因为它固占一段内存,加载入内存的时间和卸载的时间是什么时候?
    它的生命周期应该比new的实例更长。但确切的加载和卸载时间是何时?
      

  5.   

    全局的准确含义是?
    虚拟机一启动就装入,直到虚拟机停止?还是说调用该静态方法的类一装入,直到该类的实例被卸载?对静态方法
    public static String intTostr(int v){...}
    }当多个对象同时在使用这个方法时,会不会造成逻辑错误(用不用同步化?)比如对象A中,inTostr(3);同时对象B中inTostr(5);
    这个时候A得到的值有不有可能是5?
      

  6.   

    用好了static类 , 可以为大型应用程序的添加功能节约时间,同时static类变量和static类方法的存在独立于类中的任何对象