zoukankan      html  css  js  c++  java
  • 深入理解利用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变量


  • 相关阅读:
    大一励志的我,现在已经大三了
    Jenkins+K8s实现持续集成
    Jenkins搭建自动化测试环境
    软件开发式样书 6
    软件开发式样书 5
    软件开发式样书 4
    软件开发式样书 3
    软件开发式样书 2
    软件开发式样书 1
    Git学习笔记
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/4260845.html
Copyright © 2011-2022 走看看