版本1:都是静态的变量跟静态方法。
版本2:都是成员变量跟成员方法。
对我来说实现功能都一样,就是不知道哪一种设计效率高点。
版本1package test;import java.util.HashMap;
import java.util.Map;public class Test{ public static void m1(){
System.out.println("m1");
}

public static void m2(){
System.out.println("m2");
}

public static void m3(){
System.out.println("m3");
} public static Map<Integer,String> stus=new HashMap<Integer,String>();

public static Map<Integer,String> stus2=new HashMap<Integer,String>();

public static Map<Integer,String> stus3=new HashMap<Integer,String>();

    public static void main(String[] args) {
     Test.m1();
     Test.m2();
     Test.m3();
     Test.stus.put(1, "张三");
     Test.stus2.put(1, "张三");
     Test.stus3.put(1, "张三");
}
}版本2package test;import java.util.HashMap;
import java.util.Map;public class Test2 {

public static Test2 t=new Test2();

public void m1(){
System.out.println("m1");
}

public void m2(){
System.out.println("m2");
}

public void m3(){
System.out.println("m3");
}

public Map<Integer,String> stus=new HashMap<Integer,String>();

public Map<Integer,String> stus2=new HashMap<Integer,String>();

public Map<Integer,String> stus3=new HashMap<Integer,String>();

public static void main(String[] args) {
Test2.t.m1();
Test2.t.m2();
Test2.t.m3();
Test2.t.stus.put(1, "张三");
     Test2.t.stus2.put(1, "张三");
     Test2.t.stus3.put(1, "张三");
}
}

解决方案 »

  1.   

    如果一个类的方法会在许多地方用到那我认为应该把它的方法声明为static的
      

  2.   

    static方法最好是比较小的,经常用到的方法,这样可以提高程序运行速度
    一般方法应该严格控制少使用static
      

  3.   

    不需要用的静态的时候使用静态就不是好主意,一般认为静态只有一份副本,但要记住,它这一份只对应一个类加载器来说的,每个类加载器都可以用一份,代码写好之后,有时候你想放到 J2EE 上去运行偶尔你有机会发现问题,那是因为像 EJB 这种 J2EE 应用在启用分布式集群之类的功能后你可能发现怎么不正常了。静态可以换个叫法,叫无状态,或共享状态,有可能在某个情况下不成立的设计约定一定写在文档里面,或在代码的关键之外检查是否使用者违背了设计约定,就好像 Iterator 在迭代时会检查 ConcurrentModificationException 一样,一定要强制检查。不要天真地假设这个设计一定没问题,我们公司的产品以前的人写代码时就是这么认为的,他们说,我们的客户 A 一定是这样的,作为产品,我们现在把它卖给客户 B 的时候,这些代码都成为问题,而且修改+测试,一搞下来就是半年,在老板看来,业务上几乎没有差别的东西为什么要花半年时间? 这就是风险成本。
      

  4.   

    public static Map<Integer,String> stus=new HashMap<Integer,String>();好心人解释下这是什么意思
      

  5.   

    如果你的应用需求需要整个系统中只存在一份Test实例,第一种是正确的,一般用单体模式也是一样的效果
      

  6.   


    声明并初始化一个静态的哈希MAP,
    MAP中数据的KEY是Integer类型的,Value是String类型的
      

  7.   

    偶平时倒是常用static,看来要改了。
      

  8.   

     这个问题绝对是第一种效率高!静态对象它存在的生命周期在服务器启动时就实例化,而且她只实例化一次。但是static 是常驻内存,如果不是非常必要的话!尽量少使用!而public 在你每次调用时都会重新新建实例对象,这就是static效率高的原因。