zoukankan      html  css  js  c++  java
  • 对象的初始化过程

    代码:

    public class StaticDemo9 {
    
        public static void main(String[] args) {
            Woman w = new Woman("Kelly", 20);
        }
    
    }
    
    class Woman {
        private String name;
        private int age;
        private static String country = "CN";
    
        public Woman(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        {
            System.out.println(name + "...." + age);
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void speak() {
            System.out.println(name + "...." + age);
    
        }
    
        public void showCountry() {
            System.out.println("country" + country);
        }
    
    }

    Woman w = new Woman("Kelly", 20);

    这段代码的在内存中的执行过程如下:

    1、因为new用到了Woman.class,所以会先找到Woman.class类文件加载进堆内存。

    2、static静态代码块执行,如果有的话,给Woman.class类进行初始化。

    3、在堆内存中开辟空间,分配内存地址。

    4、在堆内存中建立对象的特有属性,完成默认初始化。

    5、对特有属性显式初始化

    6、执行构造代码块

    7、与之对应的构造函数初始化

    8、将内存地址值赋给内存中的w变量

  • 相关阅读:
    项目测试与部署
    使用技术及部分代码截选
    校园电子设备报修回收系统需求分析
    java lambda expression
    Domain logic approaches
    Spring AOP Capabilities ang goals
    CDI Features
    JAVA DESIGN PATTERN
    LDAP & Implementation
    spring ref &history&design philosophy
  • 原文地址:https://www.cnblogs.com/ibelieve618/p/6431063.html
Copyright © 2011-2022 走看看