static 关键字

来源:百度文库 编辑:神马文学网 时间:2024/04/28 06:55:35

Java 中的static属性 主要用于保持数据唯一性。

你可以用Random测试一下

import java.util.Random;class Test1{   Random ran = new Random();
   static Random ran2 = new Random();
   static int i = ran2.nextInt(100);   static int a =ran2.nextInt(100);   int b = ran.nextInt(100);   int c = ran.nextInt(100);   public Test1(){
            System.out.println("静态属性i = " + i + ";a = " +a );            System.out.println("非静态属性 b = " + b +";c = " +c );   }   public static void method(){
    i=90;
   }} class Test{
  public static void main(String[] args){
    new Test1();    new Test1();  }}

从上面的运行结果我们可以看到静态属性的值在内存中是唯一一份的(即只初始化一次)。

当你感觉你需要数据唯一性,或者有时候你不想创建整个类的对象,经常用到其中一个对象而已的话,那么干脆就把这个变量或对象定义为static。 可以直接用类名引用!

静态属性不属于类实例的一部分,你可以在上面Test1的构造函数中见证这一点。 即使我们实例了Test1两次,但i 和 a 依然不变。

 

至于说什么时候可以用和不可以用的话

那么就是static变量只能做为全局变量,假设你把static声明在方法里那么一定会出错的。因为局部变量声明为static是完全没有意义的。 

修饰成员使数据一直存于内存,已方便调用,适合常量定义

修饰方法,无需初始化该方法所在类的对象,直接可以通过类名.方法名的方式来调用,方便快捷。 static 修饰的变量 就是在程序启动的时候在内存一直存在,直到程序关闭。 static 是静态,
他告诉虚拟机,说,我用这个修饰的,你给我放在静态池里面(内存),并且,先给我执行。

static 修饰的,会先于非静态修饰的,
比如
1. private String abc = "123";
2. private static String abc = "123"
1的执行条件是,当虚拟机,实例化了某个类,这个abc才赋值。
2.的执行条件是,当虚拟机,一执行,就把abc赋值了。这就是为什么,静态方法,不需要实例化类,就能使用的原因,