Java中静态代码块的用法
来源:互联网 发布:tensorflow wordvec 编辑:程序博客网 时间:2024/06/04 08:34
Java中静态代码块的用法
- java静态代码块 静态方法 区别
一般情况下,有些代码必须在项目启动的时候就执行,需要使用静态代码块,它是自动执行的;
需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,是在被调用的时候才执行的,静态方法在类加载的时候就已经加载,可以使用类名直接调用
使用静态方法时注意
1)在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员 :::因为对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
2)静态方法不能以任何方式引用this和super关键字。 - 静态代码块的初始化顺序
class Parent{ static String name = "hello"; { System.out.println("parent block"); } static { System.out.println("parent static block"); } public Parent(){ System.out.println("parent constructor"); } } class Child extends Parent{ static String childName = "hello"; { System.out.println("child block"); } static { System.out.println("child static block"); } public Child(){ System.out.println("child constructor"); } } public class StaticIniBlockOrderTest { public static void main(String[] args) { new Child();//语句(*) } }
打印的顺序是
parent static block
child static block
parent block
parent constructor
child block
child constructor
原因:
首先看父类里面有没有静态代码块,如果有,它会先执行父类里面静态代码块的内容,当父类的静态代码块内的内容执行完毕之后,再去执行子类的静态代码块;再看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,再去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法
注意
子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法,如果父类没有不带参数的构造方法,那么子类必须用super关键字来调用父类带参数的构造方法,否则编译不能通过
阅读全文
0 0
- java中静态代码块的用法
- java中静态代码块的用法
- java中静态代码块的用法
- java中静态代码块的用法
- Java中静态代码块的用法
- java中静态代码块,非静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中静态代码块的用法 static用法详解
- java中ArrayList初始容量和容量分配
- 位图与布隆及大数据处理题型分析
- nyoj 252 01串
- 解决升级到Android Studio 3 Beta版本编译异常
- 【dubbo】宏观总结
- Java中静态代码块的用法
- 后台读取properties配置文件
- 最大子序列和问题 hdu1231
- JavaScript的Ajax以及中文乱码问题
- objc[8715]: Class JavaLaunchHelper is implemented in both...
- Passing file descriptor
- python基础--文件操作实现全文或单行替换
- [题解]hdu1542 Atlantis
- 前端拖拽插件gridster.js介绍与使用示例