Java中的static关键字

Java中的static关键字,可以修饰变量、类、代码块和方法

1、static关键字修饰变量

static int age = 1; // 静态变量

// 访问
对象.age
类名.age

2、static关键字修饰方法

1     /**
2      * 静态方法
3      */
4     public static void SayHello() {
5         System.out.println("Hello world");
6     }

3、static关键字修饰的静态代码块

1     /**
2      * 静态代码块,如果没有创建该对象,也会执行静态代码块
3      */
4     static {
5         System.out.println("静态代码块");
6     }

另外这里注意一下非静态代码块和静态代码块的区别?

静态代码块,如果没有创建该对象,也会执行静态代码块

如果创建对象,那么先执行静态代码块,再执行非静态代码

 1     /**
 2      * 如果创建对象,那么先执行静态代码块,再执行非静态代码
 3      */
 4     
 5     {
 6         System.out.println("非静态代码块");
 7     }
 8     
 9     /**
10      * 静态代码块,如果没有创建该对象,也会执行静态代码块
11      */
12     static {
13         System.out.println("静态代码块");
14     }

4、static修饰的静态内部类

当Singleton类加载时,静态内部类SingletonHolder没有被加载到内存中,只有当调用getUniqueInstance,方法触发加载静态内部类

 1 /**
 2  * 
 3  */
 4 package common;
 5 
 6 /**
 7  * <p>Description:</p>
 8  * 
 9  * @author Administrator
10  * @date 2019年1月7日下午12:59:02
11  * @version 1.0
12  */
13 public class Singleton {
14 
15     /**
16      * 声明为private避免调用默认构造方法创建对象
17      */
18     private Singleton() {
19         
20     }
21     
22     /**
23      * 声明为 private 表明静态内部该类只能在该 Singleton 类中被访问
24      */
25     private static class SingletonHolder {
26          private static final Singleton INSTANCE = new Singleton();
27     }
28     
29     public static Singleton getUniqueInstance() {
30         return SingletonHolder.INSTANCE;
31     }
32     
33     public static void main(String[] args) {
34         // 当Singleton类加载时,静态内部类SingletonHolder没有被加载到内存中,只有当调用getUniqueInstance,方法触发加载
35         Singleton single = Singleton.getUniqueInstance();
36         
37     }
38 
39 }
原文地址:https://www.cnblogs.com/wylwyl/p/10233901.html