• 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例


    代码如下:

    class Person
    {
    	private String name="haha";
    	private int age;
    	private static String country="cn";
    	Person(String name,int age)
    	{
    		this.name=name;
    		this.age=age;
    	}
    <span style="white-space:pre">	</span>//构造代码块的运用
    	{
    		System.out.println(this.name+"..."+this.age);
    	}
    
    	public void setName(String name)
    	{
    		this.name=name;
    	}
    
    	public void spreak()
    	{
    		System.out.println(this.name+"..."+this.age);
    	}
    
    	public static void showCountry()
    	{
    		System.out.println("country="+country);
    		method();//静态成员方法可以调用静态成员方法
    	}
    	public static void method()
    	{
    		System.out.println("method run");
    	}
    }
    class PersonDemo11
    {
    	public static void main(String[] args)
    	{
    		Person p=new Person("张三",20);
    		p.setName
    	}
    }
    


    Person p=new Person("张三",20);该句话都做了什么事情?

    1、因为new用到了Person.class,所以会先找到Person.class文件,并加载到内存中

    2、执行该类中的static代码块,如果有的话,给Person.class类进行初始化

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

    4、在堆内存中建立对象的特有属性,并进行默认初始化

    5、对属性进行显示初始化

    6、对对象进行构造代码块初始化

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

    8、将内存地址付给栈内存中的p变量


  • 相关阅读:
    将软件做成服务,并开机自启
    ubuntu下sublime Text3配置C++编译环境
    StratifiedKFold与GridSearchCV版本前后使用方法
    o2o优惠券使用预测
    Meshgrid函数的基本用法(转载)
    Andrew Ng机器学习课程,第一周作业,python版本
    多元高斯分布(转载)
    Tensorflow图像处理
    TensorFlow最佳实践样例
    个人资源索引
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/4260845.html
Copyright © 2020-2023  润新知