Java中的static关键字

Posted 林木声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于Java中的static关键字的主要内容,如果未能解决你的问题,请参考以下文章

零基础学Java并不难!详解Java中的static关键字(下)

[转] Java中的static关键字解析

Java中的static关键字解析

Java中的static关键字解析

Java中的static关键字解析

Java中的static关键字解析