2、 static在java中怎么用?

  使用static时,要记着我阐述的static代表什么。

  static使用非常的简单,如果要修饰一个静态块只需:staic {……..}即可(常用静态块来初始化一些变量); 静态方法参照main()的形式:访问标识 static returnType method(…) {};静态变量是:static type fields;

  在使用静态的方法时,可以直接用类名来引用,不需要创建实例(当然创建实例也是可以的),例如,System.out,String.valueOf()等等。

  3、 static 有那些特点和使用的“局限”?

  从上面的分析可知,static的东西在类加载时,分配了内存空间,即编译时为这些成员变量的实例分配了空间。

  那么在static块内和方法体内,我们能给它放一个在内存中还没有着落的变量?显然与我们先前所说的相左。static的东西,人家是在static storage中有“指定位置“的,如果我们茫然的在static的作用域中放置一个普通的变量,那么编译时JVM毫不客气的给你个异常:

  non-static variable a cannot be referenced from a static context或non-static method Test() cannot be referenced from a static context(注:Test()是我试验时的一个例子),除非我在static中现场开辟空间,用new来要内存。

  对于static的初始化问题,我们还是值得讨论的。现看下面的例子

package com.meritit.test;

public class StaticInit
{
    static int i;
    int a;
    public StaticInit()
    {
       a=6;
       System.out.println("a 的初始化"+a);
    }
    public static void main(String[] args)
   {
     new StaticInit();
   }
   static
   {
      i=5;
      System.out.println("i 的初始化"+i);
   }
}

  运行结果如下:

  i 的初始化5

  a 的初始化6