学习JAVA有几个月了,但是写程序的时候用是否使用静态方法还是不很了解。往往是先写非静态方法,然后因为程序提示要用静态方法,再改成静态方法。感觉在猜谜。
书上说的STATIC方法就象牧羊人角色,负责看护与其隶属的同一类型的实例群。有高人给点代码指点下么?

解决方案 »

  1.   

    解释都在注释里,楼主自己看....
    class Chinese {
    static void sing() {
    System.out.println("卓彬");
    } void singOurCountry() {
    sing();
    // 类中的成员方法也可以直接访问静态成员方法
    }
    }public class TestChinese {
    public static void main(String[] args) {
    Chinese.sing();
    // 上面的程序代码直接使用了"类名.成员"的格式
    Chinese ch = new Chinese();
    ch.sing();
    // 上面的程序代码直接使用了"对象名.成员"的格式
    ch.singOurCountry();
    }
    }
      

  2.   

    你一定是在主方法(main)里直接调用方法了,所以提示你声明成静态的,其实你应该先创建对象,再调用对象的成员方法,静态方法是可以用类名直接调用的.而实例方法是不能直接调用的.主方法本身是static,所以只能直接调用静态变量或静态方法.
      

  3.   

    利用静态方法得一个单实例的设计模式,看能不能抛砖引玉
    class A{
    private A(){}

    private static A instance = new A();

    public static A makeA(){
    return instance;
    }
    }
      

  4.   

    静态方法不用new
    直接class.method()这样用
    非静态方法必须class class1 - new class()
    class1.method()这样用
      

  5.   

    public class Test{
       private int nostatic;
        private static int sstatic;
        public void MyMethod(){
         nostatic=2;//正确,非静态方法可以访问非静态成员
         sstatic=3;//正确,非静态方法可以访问静态成员
         System.out.println("我是非静态方法!nostatic="+nostatic+"  sstatic="+sstatic);
        }
        public static void StaticMethod(){
        // nostatic=4; 不正确,静态方法不可以访问非静态成员
         sstatic=5;//正确,静态方法可以访问静态成员
         System.out.println("我是静态方法!sstatic="+sstatic);
        
        }

        public static void main(String[]args){
      
         Test test=new Test();
         test.MyMethod();//静态方法直接用类名调用
         Test.StaticMethod();//非静态方法要先把类实例化,用对象调用
        
        }
     
         
    }
      

  6.   

    1。当声明一个成员为static,可以在类的任何对象创建之前访问它,无需引用任何对象。
    最常见的例子是main(),在JAVA应用程序中,程序开始必须调用main().必须定义为静态方法。
    2。被声明为static的变量本质上是全局变量。当声明该类的对象时,不生成static变量的副本。类的实例共享共享同一个变量。
    3。声明为static的方法限制:
      仅可以调用其他static方法。
      只能访问static数据。
      不以任何方式引用this或super.(未实例化类)
    4。如果要通过计算来初始化static变量,可以声明一个static块(这个快仅在该类第一次加载时执行一次)
    5。在定义static方法和变量的类的外面,仅需要 类名.static方法或变两。很全了吧