君子攸宁

导航

java基础_对象初始化过程

1.因为new Studen()用到了Student类,所以会把它从硬盘上加载进入内存

2.如果有static静态代码块就会随着类的加载而执行,还有静态成员方法和普通方法也会随着类的加载而被加载

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

4.在堆中建立对象特有属性(非静态成员),并同时对特有属性进行默认初始化

5.对属性进行显示初始化 比如  在类中 String name="123";

6.执行构造代码块,对所有对象进行初始化

7.执行对应的构造函数,对对象进行初始化(调用不同的构造函数)

8.讲内存地址给栈中的变量

 ====================================================

1.先执行静态代码块且 只执行一次

2.执行构造代码块 每次new新对象都会执行

3.执行构造方法

实例如下

package j2se;
/*
 *静态代码块随着类的加载而执行,优先于主函数执行,切只执行一次
 *new 对象时,先调用构造代码块,再执行相应的构造方法 
 */
class Student{
	String name="fff";
	int age;
	private static String country="中国";

	public Student(){
		System.out.println("我是无参构造方法");
	}
	public Student(String name){
		this.name=name;
		System.out.println("我是一个参数构造方法");
	}
	public Student(String name,int age){
		this(name);
		this.age=age;
		System.out.println("我是两个参数构造方法");
	}
	public static void get(){
		System.out.println("我是静态成员方法");
	}
	static{
		System.out.println("我是静态代码块");
	}
	{
		System.out.println("我是构造代码块");
	}
}
public class A6_43 {
	public static void main(String[] args) {
		Student a=new Student();		
		Student b=new Student("小明");
		Student c=new Student("小明",27);

	}
}

运行结果:

我是静态代码块
我是构造代码块
我是无参构造方法
我是构造代码块
我是一个参数构造方法
我是构造代码块
我是一个参数构造方法
我是两个参数构造方法

posted on 2017-04-25 22:34  君子攸宁  阅读(168)  评论(0编辑  收藏  举报