详述对象初始化过程

用new创建并初始化对象步骤:

给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;

成员变量声明时的初始化;

初始化块初始化(又称为构造代码块或非静态代码块);

构造方法初始化

   下面用简短的一些代码加文字注释说明代码的初始化过程

public class Student{
	
	String name="张三";
	
	//思考:执行非静态代码块时,对象已经创建了吗?对象已经创建,否则this.name会出现错误
	{
		System.out.println("非静态代码块"+this.name);
	}
	
	//思考:调用构造函数时,对象已经存在了吗?已经存在了,否则this.name会出现错误
	public Student(String name){
		this.name = name;
		System.out.println("构造方法"+name);
	}
	
	//思考:先调用非静态代码块还是先调用构造方法?程序运行结果先输出张三,然后输出李四,可见一定先调用非静态代码块,再调用构造函数,并且调用非静态代码块时所创建对象的实例属性值为初始化值,或者是默认值(如果没有初始化)
	public static void main(String[] args) {
		Student student = new Student("李四");
	}
}

Java对象的初始话过程可以详细表述为下列过程,下面用代码展示

即为每次初始化Java对象时,按照以下几个过程,在操作代码时可以按照此格式

 其中,有参和无参构造方法可以颠倒顺序,如下面的代码块也可以这样写

public Studen(String name) {
        System.out.println("有参构造方法");
        this.name = "san";
        System.out.println(name);
    }
    public Studen() {
        System.out.println("无参构造函数");
    }
}
//连接Studen.java主函数
public class TestStudent {
    public static void main(String[] args) {
        System.out.println("构造方法在构造代码块之后");
        Studen student= new Studen("si");
        System.out.println(student.name);
    }

其中,java中构造方法指的是:
与类名相同,无返回类型的方法,参数可以为空,也可以带参数。
比如一个 Dao 类,private Dao(){}这个就是无参数的构造方法
private Dao(String name){}这个就是带参数的构造方法
作用:用来初始化 java 类,提供类的初始化和实例化,以便调用。

一旦自定义构造方法后,系统将不再自动生成无参数的构造方法

构造方法的作用:在类的实例对象刚产生时,该类中的构造方法将会被自动调用,我们可以再该构造方法中加入需要完成初始化工作的代码。

需要注意的有以下几点:

编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法;(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效)
编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法!
如果需要使用无参构造方法,一定要在类里面添加
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值