关于含static关键词的代码调用顺序
来源:互联网 发布:新中新dkq a16d软件 编辑:程序博客网 时间:2024/05/24 01:56
首先我们构造一个类:
public class StaticTest { public static int k(){ System.out.println("静态成员初始化");return 1;}; public static int m(){ System.out.println("普通成员初始化");return 1;}; StaticTest() { System.out.println("构造函数执行"); } //构造方法 static int a = k();//静态成员 int b = m();//普通成员 { System.out.println("普通代码块执行"); } //普通代码块 static{ System.out.println("静态代码块执行"); } //静态代码块 static void f(){ System.out.println("静态方法执行"); } //静态方法 void g(){ System.out.println("普通方法执行"); } //普通方法 public static void main(String[] args){ StaticTest s = new StaticTest(); f(); }}
我们将主函数中代码注释掉的情况下,程序的输出是:
D:\java\jdk1.8.0_131\bin\java...静态成员初始化静态代码块执行Process finished with exit code 0
如果交换静态成员和静态代码块的位置,那么输出结果的顺序也会交换
当我们在主函数中只是new对象时,程序输出:
D:\java\jdk1.8.0_131\bin\java...静态成员初始化静态代码块执行普通成员初始化普通代码块执行构造函数执行Process finished with exit code 0
如果我们在主函数中只调用f()方法,则程序输出:
D:\java\jdk1.8.0_131\bin\java...静态成员初始化静态代码块执行静态方法执行Process finished with exit code 0
同样,如果将普通代码块和普通成员调换位置,它们的输出也会相应的改变,也就是说它们处于同一级。
通过以上代码程序的结果对于类中代码的执行顺序有以下结论:
- 静态成员、静态代码块(谁前谁先执行)
- 普通成员、普通代码块(同上)
- 构造方法
- 一般方法则在调用时执行
如果存在多继承的情况下,则按照1、2、3的顺序从父类到子类依次执行。
个人总结,有问题还望纠正…
阅读全文
1 0
- 关于含static关键词的代码调用顺序
- 关于static的加载顺序
- static 关键词的作用
- static 关键词的使用
- 关于java中的static关键词
- 关于静态代码块调用顺序的若干问题总结
- Java 关于继承中的static代码块,普通代码块及构造方法的执行顺序
- 关于 static r 关键词的作用和规则
- 关于static clause的调用
- java中static代码块和构造函数的调用顺序
- java静态代码块和静态方法的区别和调用顺序、static用法
- 含有“static”的代码执行顺序!!!
- 关于static语句,构造代码块,构造方法的执行顺序
- 关于static语句,构造代码块,构造方法的执行顺序
- c++的static关键词注意事项
- Java的static关键词详解
- 关于static方法间的互相调用
- static关键词
- 判断手机是否有虚拟按钮,获取虚拟按钮的高度
- 修改回现
- DragonBoard-410c
- MySQL Community Server 5.7.19安装指南
- Vision_数据结构_并查集
- 关于含static关键词的代码调用顺序
- jdk源码解析(六)——类(class)文件结构
- 单选Btn
- Ubuntu16.04下安装sublime text3并配置anaconda插件
- Codeforces Round #437-贪心-C. Ordering Pizza
- 判断元音还是辅音
- 欢迎使用CSDN-markdown编辑器
- List与Json的相互转换
- ###struts模型驱动(必须new)能够封装【对象类型属性的属性】.页面传参错误导致的问题:HTTP Status 500