A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

程序执行的时候这个执行顺序是不是说是构造代码块,构造方法吗。那普通方法呢,为什么没有它的执行顺序,它应该是在构造方法后执行是吗?

9 个回复

倒序浏览
普通方法是在要用到的时候才调用。顺序你自己定。
回复 使用道具 举报
比如new一个Person对象
Person p=new Person("张",20);
1.new person类之后,加载person.class文件加载到内存中
2.执行该类中的static代码块,对Person.class进行初始化
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象的特有属性,并对其默认初始化
5.对特定属性进行显示初始化
6.对对象进行构造代码块初始化
7.进行构造函数初始化
8.将内存地址付给栈中的对象变量
执行优先级:
静态代码块初始化----默认初始化------显示初始化------构造代码块初始化----构造函数初始化
至于普通方法是在这些过程之后的事情了,你调用他才会执行
回复 使用道具 举报
dragonsoull 发表于 2015-7-14 10:27
普通方法是在要用到的时候才调用。顺序你自己定。

哦哦,就是说不一定调用啊,要是第一个调用它,顺序能在构造代码块之前执行吗
回复 使用道具 举报
紫夜灵魂 发表于 2015-7-14 10:38
比如new一个Person对象
Person p=new Person("张",20);
1.new person类之后,加载person.class文件加载到内 ...

能通过调用让他在构造代码块之前执行吗
回复 使用道具 举报
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
回复 使用道具 举报
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
回复 使用道具 举报
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
回复 使用道具 举报
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
回复 使用道具 举报
紫夜灵魂 发表于 2015-7-15 12:58
普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里 ...

哦哦,谢谢解答,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马