黑马程序员技术交流社区

标题: 谁能给我解答下构造方法和普通方法执行的问题啊 [打印本页]

作者: cheng_xu_yuan_    时间: 2015-7-13 22:39
标题: 谁能给我解答下构造方法和普通方法执行的问题啊
程序执行的时候这个执行顺序是不是说是构造代码块,构造方法吗。那普通方法呢,为什么没有它的执行顺序,它应该是在构造方法后执行是吗?
作者: dragonsoull    时间: 2015-7-14 10:27
普通方法是在要用到的时候才调用。顺序你自己定。
作者: 紫夜灵魂    时间: 2015-7-14 10:38
比如new一个Person对象
Person p=new Person("张",20);
1.new person类之后,加载person.class文件加载到内存中
2.执行该类中的static代码块,对Person.class进行初始化
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象的特有属性,并对其默认初始化
5.对特定属性进行显示初始化
6.对对象进行构造代码块初始化
7.进行构造函数初始化
8.将内存地址付给栈中的对象变量
执行优先级:
静态代码块初始化----默认初始化------显示初始化------构造代码块初始化----构造函数初始化
至于普通方法是在这些过程之后的事情了,你调用他才会执行
作者: cheng_xu_yuan_    时间: 2015-7-14 22:35
dragonsoull 发表于 2015-7-14 10:27
普通方法是在要用到的时候才调用。顺序你自己定。

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

能通过调用让他在构造代码块之前执行吗
作者: 紫夜灵魂    时间: 2015-7-15 12:37
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
作者: 紫夜灵魂    时间: 2015-7-15 12:56
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
作者: 紫夜灵魂    时间: 2015-7-15 12:57
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

普通方法的话,可以在构造代码块里调用普通方法。要想在构造代码块之前执行时不能的,要想在构造代码块里执行那么就得放到静态代码块里,但是这是不允许的,静态代码块只能放静态的的属性个方法
作者: 紫夜灵魂    时间: 2015-7-15 12:58
cheng_xu_yuan_ 发表于 2015-7-14 22:36
能通过调用让他在构造代码块之前执行吗

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

哦哦,谢谢解答,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2