zoukankan      html  css  js  c++  java
  • Java类的实例化的初始化过程

    A a = new A();

    new 创建对象过程:
    1.类加载
        代码验证
    2.给对象在内存(堆)中分配空间(给属性赋值);
    3.属性赋默认值;
    byte,short.int,long ->0
    float  ->0.0f
    double ->0.0
    boolean  ->false
    String ->null
    char ->'u0000'
    4.给属性赋初始值;(用等号‘=’)
    5.调用构造方法(方法和类名相同,没有返回类型)
    6.将对象在堆区中的首地址返回给引用a

    /*
     * Java类实例化的初始化过程.
     *   执行顺序:
     *   (静态变量->静态初始化块)->main->(实例变量->实例初始化块)->构造器
     */
    
    public class NewInstanceTest1
    {
        public static void main(String[] args)
        {
            System.out.println("main");
    
            System.out.println("---111---");
            new NewInstanceTest1();
    
            System.out.println("---222---");
            new NewInstanceTest1();
        }
    
    
        private static int i = 1;
        public static String sStr = "静态变量";
        public String iStr = "实例变量";
    
    
        {
            // 实例初始化块
            System.out.println("进入实例初始化块");
            System.out.println("实例初始化块中调用变量:" + iStr);
            System.out.print("实例初始化块中调用方法:");
            iTalk();
        }
    
    
        static
        {
            // 静态初始化块
            System.out.println("进入静态初始化块");
            System.out.println("静态初始化块中调用变量:" + sStr);
            System.out.print("静态初始化块中调用方法:");
            sTalk();
        }
    
        public static void sTalk()
        {
            // 静态方法
            System.out.println("静态方法" + "/静态变量值" + (++i));
        }
    
        public void iTalk()
        {
            // 实例方法
            System.out.println("实例方法");
        }
    
        public NewInstanceTest1()
        {
            // 构造器
            System.out.println("构造器");
        }
    
    }
    
    
    
    // 输出结果:
    进入静态初始化块
    静态初始化块中调用变量:静态变量
    静态初始化块中调用方法:静态方法/静态变量值2
    main
    ---111---
    进入实例初始化块
    实例初始化块中调用变量:实例变量
    实例初始化块中调用方法:实例方法
    构造器
    ---222---
    进入实例初始化块
    实例初始化块中调用变量:实例变量
    实例初始化块中调用方法:实例方法
    构造器
  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/kabi/p/6362841.html
Copyright © 2011-2022 走看看