通俗说下java中的static

来源:互联网 发布:淘宝大学证书 编辑:程序博客网 时间:2024/04/29 23:58

1.static 当他是修饰的方法的时候

 如:public static void person()

       {

      }

    public  void  A()

    {

     person();//直接调用,不需要new,必须实现,但占用内存

    }


2.static修饰变量时候

其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。

示例:

class Person{
      //成员变量,实例变量
      String name;
      //静态变量,类变量
      //所有对象共享的属性用static修饰
      static String country = "CN";
      public void show(){
            System. out.println(country + ":" + name);
            //等效语句:System.out.println(Person.country+ ":" + this.name);
      }
}
class StaticDemo{
      public static void main(String[]args){
            Personp = new Person();
            System. out.println(p.country);
            //可以用类名直接调用
            System. out.println(Person.country);
      }
}

结果:

CN

CN 



3.static修饰类时候

静态类主要是共享,静态类内部成员必须是静态的。静态一般在程序加载的时候被构造。我个人用静态类最多的地方的是程序配置部分,因为他的共享特性,在多个窗体中都需要调用,更主要的就是他在程序启动的时候就被初始化了。静态类可以有构造函数,但是只被调用一次。就上面说的程序配置数据部分,如果使用非静态类,那么你需要在任何有可能访问到他的代码前手动初始化他,并且还要将他赋给一个静态变量后才能使用。费事不费事另说,假若你需要在他构造前某个位置来调用它,那还需要修改你构造他的代码的位置。 非静态类使用完成后系统会自动销毁释放,所以非静态类相对来说比较安全,而静态类是在程序结束后销毁的,在销毁前一直驻留在内存中,因此出现错误的可能性会大些。建议不要过多的使用静态类,适时使用。
4.static 和final同时使用
public static final  string user="china";//有静态变量的好处,同时这个变量不能修改
 static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
        对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
        对于方法,表示不可覆盖,并且可以通过类名直接访问
5.static修饰代码块时候

 static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。例如:

public class Test5 {
private static int a;
private int b;
 
static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}
}

  运行结果:

3
hhahhahah
1000
4
5

0 0