虽然说不管是静态变量还是静态方法,这些都是java基础的知识了,但我发现还是有很多人不懂静态的原理,静态的属性遵循以下规则:
- 静态元素会在构造方法之前执行
- 静态元素从上到下按顺序执行
- 静态元素不需要初始化即可直接使用;
1、静态元素会在构造方法之前执行,举个例子就知道啦;我们看看下面的代码
- public class Main {
- static{
- System.out.println("1:静态代码块");
- }
-
- public Main(){
- System.out.println("2:构造函数");
- }
-
- public static void main(String[] args) {
- // 初始化
- Main main = new Main();
- System.out.println("3 :main 方法");
- }
- }
输出如下:
通过例子我们可以知道,我们在类中加个一个静态方法块 static{} ,那么这个静态的方法块就一定会在类的初始化之前执行,
需要注意的是,就算不初始化,这个static方法块也会执行,代码如下:
- public class Main {
- static{
- System.out.println("1:静态代码块");
- num = 2;
- }
- public static int num = 1;
-
- public Main(){
- System.out.println("2:构造函数");
- }
- public static void main(String[] args) {
-
- }
- }
通过以上代码我们可以看到,以上的main方法没有任何代码,但是照样会打印静态代码块的字符;
2、静态元素从上到下按顺序执行
静态元素也是有执行顺序的,规则就是从上至下按顺序执行;多说无用,看代码:
- public class Main {
-
- public static int num = 1; // 静态变量
-
- static{
- num = 2;
- }
-
- public static void main(String[] args) {
- System.out.println("静态变量的值为:"+num);
- }
- }
打印结果如下:
那么这时候我们把静态修饰的方法和属性换个位置
替换位置后的代码如下:
- public class Main {
-
- static{
- num = 2;
- }
-
- public static int num = 1; // 静态变量
-
- public static void main(String[] args) {
- System.out.println("静态变量的值为:"+num);
- }
- }
打印结果也会发生变化
通过以上举例说明了,静态变量和方法都是按顺序执行的;