jvm介绍 day2

day2

例一

/*
 /**
 * @author NingXioaoming
 * @createTime 2019/12/12 14:44
 * @description
 */

/*
        主动使用new创建类的对象,所以MyParent4被示例化

        对于数组实例来说,其类型是有JVM在运行期间动态生成的,表示为[Lcom.mobius.vision.jvm.classloader.MyParent4
        这种形式,动态生成的类型,其类型是object

        对于数组来说,JavaDoc经常将构成数组的元素为Component,实际上就是将数组降低一个维度后的类型。

        助记符:
        anewarray :表示创建一个引用类型的(如类,接口,数组)数组,并将其引用压入栈顶 如:MyParent4[] myParent4s = new MyParent4[1];
        newarray:表示创建一个指定的原始类型(如int,float,char等)的数组,并将其引用值压入栈顶。
 */
public class MyTest4 {
    public static void main(String[] args) {
        MyParent4 parent4 = new MyParent4();
        System.out.println("-=====");
        MyParent4 parent5 = new MyParent4();//一个类只能被实例化一次

        MyParent4[] myParent4s = new MyParent4[1];
        System.out.println(myParent4s.getClass());
        System.out.println(myParent4s.getClass().getSuperclass());
        System.out.println("==========");

        int[] arr = new int[1];
        System.out.println(arr.getClass());
        System.out.println(arr.getClass().getSuperclass());

        boolean[] b = new boolean[1];
        System.out.println(b.getClass());
    }
}
class MyParent4{
    static {
        System.out.println("MyParent static block");
    }
}

例子二

/**
 * @author NingXioaoming
 * @createTime 2019/12/12 20:34
 * @description
 */
public class MyTest6 {
    public static void main(String[] args) {
        Singleton.getInstance();  //调用静态方法 对类进行初始化  给静态变量赋初始值
        System.out.println("a="+Singleton.a);
        System.out.println("b="+Singleton.b);
    }
}
class Singleton{
    public static int a;
    private static Singleton singleton=new Singleton();//创建类的实例  对类进行初始化  给静态变量赋初始值 并执行构造方法   执行顺序 是从上往下
    public Singleton(){
        a++;
        b++;//准备阶段的意义
    }
    public static int b=1;
    public static Singleton getInstance(){
        return singleton;
    }
}

你可能感兴趣的:(jvm介绍 day2)