java学习笔记(6):类与对象之构造器(构造方法?)

文章目录

    • 1.构造器(构造方法)
    • 2.构造器的内存分析
    • 3.无参构造器(即系统默认的构造器)和有参构造器

笔者在网上看了很多博客,大部分都觉得构造器和构造方法是划等号的,但我个人的理解是:构造器是构造方法被用来new对象时的称谓。

1.构造器(构造方法)

构造器与类同名,在构造一个类的对象实例时,构造器会运行,构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
注意事项:
1.构造器与类同名
2.每一个类可以有一个以上的构造器
3.构造器可以有0或者多个参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用

2.构造器的内存分析

java学习笔记(6):类与对象之构造器(构造方法?)_第1张图片
运行结果:在这里插入图片描述

内存图如下:
java学习笔记(6):类与对象之构造器(构造方法?)_第2张图片
图解说明:
1、首先将main方法压入栈中,执行main方法中的 new Person(23,“张三”);
2、在堆内存中分配一片区域,用来存放创建的Person对象,这片内存区域会有属于自己的内存地址(0x88)。然后给成员变量进行默认初始化(name=null,age=0)。
3、执行构造方法中的代码(age = a ; name = nm;),将变量a对应的23赋值给age,将变量nm对应的”张三赋值给name,这段代码执行结束后,成员变量age和name的值已经改变。执行结束之后构造方法弹栈,Person对象创建完成。将Person对象的内存地址0x88赋值给staff[1]。

3.无参构造器(即系统默认的构造器)和有参构造器

(1)在我们在写一个类未写其构造器时,在编译java文件时,编译器会自动的给class文件添加默认的构造器。
默认构造器:类名(){ }

(2)当我们在写一个类时,写了构造器,那么在编译java源文件时,编译器就不会给class文件添加默认的构造器了。

注:
1.一个类中可以有多个构造器(多个构造器时以重载的形式存在的)。
2.构造方法是可以被private修饰的(这样其他程序无法创建该类的对象)

你可能感兴趣的:(#,java基础)