类型信息之类字面常量
类是程序的一部分,每个类都有一个Class对象,换言之,每当编写并且编译一个新类,就会产生一个Class对象。
为了使用类而做的工作实际包含三个步骤:
1.加载,这是由类加载器执行的。改步骤将查找字节码,并从字节码中创建一个Class对象。
2.链接。在链接阶段将验证类中的字节码,为静态域分配存储空间,并且如果必需的话,将解析这个类创建的对其他类的所有引用。
3.初始化。如果该类具有超类,则对其初始化,执行静态初始化器和静态初始化块。
下面通过几个例子来说明
class P{static int a = 47;static{System.out.println("asdasdasd");}}public class StaticTest {public static void aa(){System.out.println("/.................");}public static void main(String[] args) throws ClassNotFoundException {//Class c = Class.forName("P");System.out.println(P.a);}}package com.unis.type;import java.util.Random;class Initable{static final int staticFinal =47;static final int staticFinal2= ClassInitialization.rand.nextInt(1000);static{System.out.println("Initializing Initable");}public Initable() {System.out.println("asdsadasdasdsssssssssssssssssssssssssss");}}public class ClassInitialization {static{System.out.println("ClassInitialization");}public static Random rand = new Random(47);public static void main(String[] args) throws ClassNotFoundException {System.out.println(Initable.staticFinal);}}package com.unis.type;import java.util.Random;class Initable{static final int staticFinal =47;static final int staticFinal2= ClassInitialization.rand.nextInt(1000);static{System.out.println("Initializing Initable");}public Initable() {System.out.println("asdsadasdasdsssssssssssssssssssssssssss");}}public class ClassInitialization {static{System.out.println("ClassInitialization");}public static Random rand = new Random(47);public static void main(String[] args) throws ClassNotFoundException {System.out.println(Initable.staticFinal2);}}package com.unis.type;import java.util.Random;class Initable{static final int staticFinal =47;static final int staticFinal2= ClassInitialization.rand.nextInt(1000);static{System.out.println("Initializing Initable");}public Initable() {System.out.println("asdsadasdasdsssssssssssssssssssssssssss");}}public class ClassInitialization {static{System.out.println("ClassInitialization");}public static Random rand = new Random(47);public static void main(String[] args) throws ClassNotFoundException {Class initable=Initable.class;}