供整个类使用的方法就可以写static,比如Object类的equals()方法
如果是某个对象的方法,则不具备写static的条件,因为它的一些方法不能被其他对象使用

解决方案 »

  1.   

    楼主说的理论上正确,不过一般在做与实例完全无关的方法时才用static,static方法还是尽量避免,否则都成了C语言里的一个个function了,就不是非常面向对象了
      

  2.   

    写函数就是要用static
    在保证线程安全的前提下,都可以用static方法
      

  3.   

    楼主理解的不错,正确的说法应该是:
    如果类的某个成员方法没有保存状态信息的意义,那么这个方法就应该被设计成静态方法,可以直接使用类来调用,因为创建对象是为了保存状态,不保存状态信息就不因为创建对象,创建对象所付出的代价是黯贵的(ABC打不出来.........)
      

  4.   

    不知道static的效率或者资源占用和普通的方法有无区别?
      

  5.   

    Static的东西,在内存里只有一份
      

  6.   

    通常static方法的一个普遍是使用类似c中function中使用.这点你可以参看Math类.不过楼上朋友说的对,你要注意在多线程的时候static的使用.
    通常这样的工具方法都是跟输入没有关系的,也就是说它们不对输入项进行操作而是根据输入项得到一些值.例如
    我们在编写一个棋类游戏,每次我们从网络中得到的都是棋子的ID而并非名称,但是在更新棋盘的同时我们要生成棋谱,例如"3四兵",而我们需要一个能根据棋子ID得到棋子名称的方法,而这个方法又可能在多个类(不仅是通一个类的多个实)使用,那么就需要编写一个这样的工具,因此我们在ClientUtil类中加入如下方法
    publci class ClientUtil{
        public static String getChessmanName(byte _chessmanId){
            String cName= "";
            switch(_chessmanId){
                case 1: 
                    cName = "兵";
                    break;
                case 2:
                    cName = "卒";
                    break;
                ...... 
           }
        }
    }
    在GamePanel中我们就需要使用该方法
    public class GamePanel{
        public void move(){
             ......
            updateChessManual();
        }
        private void updateChessManual(){
            .......
            String cName = Client.getChessmanName();
            .......
        }
    }
    如果是属性static 的时候我们多用于和final组合作一些常量使用.
    以上使我们使用static的习惯,不能代表static的全部.
      

  7.   

    同意ericsion(ERIC) 通常要一个常用的工具时方法就为static
      

  8.   

    那要是控制一个类,只能事例化一次,不是只能用 static方法吗?
    例如:
    class staticed
    {
    static staticed st = new staticed();
    public static staticed get()
    {
    return st;
    }
    private staticed()
    {
              //...
    }
    }
    class goin
    {
    public static void main(String [] args)
    {
    staticed obj = staticed.get();
    }
    }
    请大家顺便去 http://community.csdn.net/Expert/topic/3763/3763214.xml?temp=.9655725
    谢谢
      

  9.   

    zoeg(沉香)     保存状态信息 ? 状态信息是什么?能否举个例子?
      

  10.   

    严格来说static的使用破坏了类的封装,但是用在工具类里面还是比较方便的,但是前提是不要涉及同步问题.最好也不要在里面处理业务