Java面向对象高级之静态

静态(static)

Java中被static修饰的成员称作静态成员或类成员,属于整个类所有,可以直接使用类名或对象名进行访问

静态方法与静态变量

用static修饰的方法叫做静态方法  ,用static形式的变量叫做 静态变量

以下是使用静态(static)使用的几个需要注意的点:

1、静态方法可以直接调用同类中的静态成员,不能调用非静态成员

2、静态方法可以直接调用同类中的静态方法,不能调用非静态方法

3、普通方法则都可以进行调用


下面通过一段代码解释下:

public class StaticDemo {

           static String s = "Hello";

            String s1 = " Tom";

            public static void main(String[] args) {

                 StaticDemo sd = new StaticDemo();

                  System.out.println(StaticDemo.s+sd.s1);//前者为静态变量,可以直接调用,

                                                                                   //后者实例化后通过对象调用

                  sd.print1();

                  print2();//静态方法可以被直接调用

            }

            public void print1(){

                      System.out.println(s+s1);//普通方法可以直接调用各种成员

            }

            public static void print2(){

                      StaticDemo sd = new StaticDemo();

                      System.out.println(s+sd.s1);

            }

}


静态代码块

类加载时的执行顺序:

1、首先执行静态初始化块;

2、然后执行普通初始化块;

3、最后执行构造方法。


上代码

public class StaticDemo2 {

          int num1;

          int num2;

          static int num3;

          public StaticDemo2(){ //构造方法

          num1 = 1;

         System.out.println(num1);

         }

        {

               //普通初始化块

               num2 =2;

               System.out.println(num2);

         }

         static{

                 //静态初始化块

                 num3 = 3;

                 System.out.println(num3);

        }

        public static void main(String[] args) {

                  StaticDemo2 s1 = new StaticDemo2();

                  StaticDemo2 s2 = new StaticDemo2();

        }

}


那么输出结果是什么呢?

感兴趣的可以自己试一下哦


输出结果如下

那么我们可以从上面看出执行顺序

而且静态(static)只可以执行一次

參考 :https://www.imooc.com/article/15626

你可能感兴趣的:(Java面向对象高级之静态)