详述对象初始化过程

详述对象初始化过程

用new创建并初始化对象步骤:
1、给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;
2、成员变量声明时的初始化;
3、初始化块初始化(又称为构造代码块或非静态代码块);
4、构造方法初始化

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("李四");
	}
}

运行结果:
在这里插入图片描述

public class Student{
	String stuName = "";
	int stuAge = -1;
	String stuSex = "";
	int stuGrade = -1;//成员变量声明时初始化
	{
		this.stuName = "雷静";
		this.stuAge = 20;
		this.stuSex = "女";
		this.stuGrade = 2;				
	}//初始化块初始化
	public Student() {
		System.out.println("无参构造方法初始化");
	}
	public Student(String stuName,int stuAge,String stuSex,int stuGrade) {
		this.stuName = stuName;
		this.stuAge = stuAge;
		this.stuSex = stuSex;
		this.stuGrade = stuGrade;
	}//构造方法初始化
	public static void main(String[] args) {
		Student student = new Student();
		System.out.println(student.stuName+student.stuAge+student.stuSex+student.stuGrade);
		Student stu = new Student("王云",22,"女",4);
		System.out.println(stu.stuName+stu.stuAge+stu.stuSex+stu.stuGrade);
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值