静态方法和构造方法的执行顺序以及代码块的区分
程序员文章站
2022-08-29 13:37:47
静态方法和构造方法的执行顺序以及代码块的区分public class Method{//构造方法public Method(){System.out.println("我是构造方法");}//静态方法public static void staticMethod(){System.out.println("我是静态方法");}public static void main(String[] args){Method.staticMethod();/...
静态方法和构造方法的执行顺序以及代码块的区分
public class Method{
//构造方法
public Method(){
System.out.println("我是构造方法");
}
//静态方法
public static void staticMethod(){
System.out.println("我是静态方法");
}
public static void main(String[] args){
Method.staticMethod();//创建对象前调用静态方法
Method m = new Method();//创建对象的同时调用构造方法
}
}
通过观察上面的代码可以得出以下结论:
1.静态方法不需要创建(实例化)对象,就可以调用
2.静态方法在内存中开辟空间时,就已经存在
3.静态方法的优先级高于构造方法
//构造代码块
{
System.out.println("--我是构造代码块--");
}
//静态代码块
static{
System.out.println("--我是静态代码块--");
}
通过上下对比可以观察出:(区分方式)
构造代码块可以看作是省略了修饰符、命名(类名)的构造方法
静态代码块可以看作是省略了修饰符、返回值类型、命名(方法名)的静态方法
public class Block(){
//构造方法
public Block(){
System.out.println("--我是(无参)构造方法--");
}
//静态方法
public static void method(){
System.out.println("--我是静态方法--");
}
}
通过观察,产生设想:
静态代码块会不会和静态方法优先级高于构造方法一样,优先级要高于构造代码块
进行验证:
public class Test{
//构造代码块
{
System.out.println("我是构造代码块");
}
//静态代码块
static{
System.out.println("我是静态代码块");
}
public static void main(String[] args){
//测试1:什么都不写的情况下执行
//测试2:创建(实例化)Test对象后执行
Test t = new Test();
}
}
测试1的结果:
测试2的结果:
所以通过上面的测试,证实猜想正确
说明静态代码块的优先级高于构造代码块
本文地址:https://blog.csdn.net/weixin_41850612/article/details/109584253
推荐阅读
-
Java和Android中,代码块、static静态代码块的执行顺序
-
java 对象的初始化流程(静态成员、静态代码块、普通代码块、构造方法)
-
荐 java基础中的--------构造方法+静态+代码块+主方法解释
-
静态方法和构造方法的执行顺序以及代码块的区分
-
Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?
-
关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法
-
关于静态代码块,构造代码块,构造方法,普通代码块的一些概念和执行顺序
-
关于静态语句块、非静态语句块,成员变量初始化、构造方法在父子类执行的顺序:
-
类加载机制,类初始化时各个成员执行的顺序,静态代码块,静态方法,静态成员变量
-
子类的实例化(静态代码块,静态成员变量,构造方法)