类加载时期:
public class TestClassLoad {
static int i;
static {// 类相关
System.out.println("static Test");
}
{// 对象相关
System.out.println("语句块Test");
}
public TestClassLoad() {
System.out.println("TestClass");
}
// TestClassLoad.main("");
public static void main(String[] args) {
System.out.println("begin");
TestClassLoad.i = 3;// 类名.时加载类
System.out.println("i= " + i);
TestClassLoad tcl = null;
System.out.println("end");
new TestClassLoad();// new 对象时加载类
new TestClassLoad();
}
}
静态方法重写:
public class TestStaticMethod
extends Super{
int i1 = 0;
static int i2 = 0;
public static void test(){
//i1 = 10;//非静态属性不能直接使用
i2 = 10;
System.out.println("subclass");
}
public static void main(String[] args){
Super s = new TestStaticMethod();
s.test();//=Super.test();
}//静态方法可以重写,但是发生多态时,调重写前的
}
class Super{
public static void test(){
System.out.println("super");
}
}
静态属性:
public class TestStaticField {
private int i1 = 0;//在堆内存
private static int i2 = 0;//在池中
public TestStaticField(){
i1++;
i2++;}
public static void main(String[] args) {
System.out.println(TestStaticField.i2);
TestStaticField tf1 = new
TestStaticField();
TestStaticField tf2 = new
TestStaticField();
System.out.println(tf1.i1);
System.out.println(tf1.i2);
System.out.println(tf2.i1);
System.out.println(tf2.i2);
}
}