java 调用静态方法和构造函数和静态块执行的先后顺序
大家好,我是从c#过来学习java,想了解一下,一个类中有构造函数和静态方法,调用静态方法的时候是不是先执行了构造函数。那么静中又有静态区块的时候呢...
大家好,我是从c#过来学习java,想了解一下,一个类中有构造函数和静态方法,调用静态方法的时候是不是先执行了构造函数。那么静中又有静态区块的时候呢
展开
3个回答
展开全部
java中首先是静态块先执行,静态方法,最后是构造函数。示例如下:
public class ExA {
static {
System.out.println("父类--静态代码块");
}
public ExA() {
System.out.println("父类--构造函数");
}
{
System.out.println("父类--非静态代码块");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子类--静态代码块");
}
{
System.out.println("子类--非静态代码块");
}
public ExB() {
System.out.println("子类--构造函数");
}
}
执行结果
=====
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
展开全部
静态块和静态变量是并列的,谁在前谁最先。接下来,main,除了main 静态方法都不会执行,实例化以后再执行,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造方法是只有你在new对象的时候才会执行,静态语句块和静态方法在类加载到内存的时候就已经执行了
,另外,静态语句块只能给静态变量赋值,里面不能出现方法,同样,静态方法里面也不能出现静态语句块
,另外,静态语句块只能给静态变量赋值,里面不能出现方法,同样,静态方法里面也不能出现静态语句块
追问
调用静态方法之前是不是先执行了静态语句块呢
追答
对,先是静态语句块执行,然后静态方法加载到内存.
静态语句块你不管它它自动会执行,而静态方法它一直存在于内存中,只有你用类名点方法名的时候才会执行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询