类的加载,new操作与构造函数

http://www.cnblogs.com/dolphin0520/p/3803432.html

初始化块(类的加载顺序)

当程序执行时,需要生成某个类的对象,Java执行引擎会先检查是否加载了这个类,如果没有加载,则先执行类的加载再生成对象,如果已经加载,则直接生成对象。


程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象

//类的加载过程
class member{
	member(char ad){
		System.out.print("初始化成员变量:");
		System.out.println(ad);
	}
	
}
class A {
	member a=new member('A');
	A(){
		System.out.println("执行A类的构造函数");
	}
	
}
class B extends  A{
	member b=new member('B');
	B(){
		System.out.println("执行B类的构造函数");
	}
	
}
public class nnn{
	public static void main(String args[]){
	B b=new B();
	}
	
}
输出结果:

初始化成员变量:A
执行A类的构造函数
初始化成员变量:B
执行B类的构造函数

在子类的构造器中如果没有使用super关键字,系统会自动调用父类的无参构造器,如果父类没有无参构造器,发生编译错误,此时应该在子类的构造器中使用super关键字调用的父类的有参数构造器。



方法区:整个过程中唯一的元素即class.static变量,至于class变量,即类的类型信息,包括类的成员方法

java堆:存放类的实例对象本身,这个本身包括很多引用,指向对象对应的类的方法在方法区中的地址,用于实例调用类的成员方法

Java栈:保存局部变量,包括对象的引用(指向java堆区的实例对象本身)和一些基本数据类型(int ,char)

本地方法栈:每当线程调用一个方法的时候就会向方法栈压入一个新帧。这里的帧用来存储方法的参数、局部变量和运算过程中的临时数据:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值