Java中的static
作者:网络转载 发布时间:[ 2013/8/16 13:39:45 ] 推荐标签:
静态块的初始化要早于非静态的,原因是在于这些东西是在类装载时开始初始化了。
说起static的“局限“,总结起来是:在static的方法中仅能够调用其他的static方法和static变量;在static方法中不能以任何方式引用this或super;static变量在定义时必须进行初始化,并且初始化的时间早于非静态。还有一个局限我需要具体的说明一下,static的变量的初始化仅能一次,如下例:
package com.meritit.test;
public class Static {
T1 t1 = new T1(2);
T1 t2 = new T1(3);
T1 t3 = new T1(4);
public Static() {
System.out.println("t1: " + t1.t);
System.out.println("t2: " + t2.t);
System.out.println("t3: " + t3.t);
}
public static void main(String args[]) {
new Static();
}
}
class T1 {
static int t = 1;
T1(int b) {
t = b;
}
}
运行结果:
t1: 4
t2: 4
t3: 4
该static变量只是接受了后一次的初始化.实际这还是我们先前提到的多个实例共享一个静态的变量的问题。
总之,static是给我们一个这样的忠告:static的东西在编译时,已向内存要到了存取空间了。

sales@spasvo.com