JAVA中的Static

54 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

JAVA中的Static

前言

今天我们一起来学习一下Java中的Static关键字,static可以修饰方法、变量、代码块、内部类,也就是我们俗称的静态方法、静态变量、静态代码块、静态内部类,今天我们就逐个一起来学习学习。

静态方法

静态方法是在方法前面增加static进行修饰,使用static修饰后,这个方法就属于类,不属于对象,我们在使用该静态方法时,直接使用类名进行调用即可,不需要重新创建这个类的对象,并且静态方法中可以访问我们接下来要讲的静态变量。

public class Test {
  
  	static String name = "";
  
  	static void setName() {
        name = "Test";
    }

    public static void main(String[] args) {
      Test.setName();
    }
}

静态变量

使用static修饰的即为静态变量,静态变量只在类加载的时候分配一次内存空间,所有类的实例对象都会共享该变量,所有对象对该变量的操作都是在操作同一块内存区域。静态变量是使用类名进行访问。

public class Test {
  
  	static String name = "";

    public static void main(String[] args) {
      
    }
}

静态代码块

静态代码块是使用statci加两个大括号包裹的代码块,静态代码块是在main()方法之前执行,一般是用来初始化一些静态变量,例如初始化一些共享的静态List集合、Map集合等, 在实际开发中,静态代码块用的最多的是加载一些配置文件中的信息。

public class Test {
    public static String name = "";
    
  	static {
  		name = "Test"
  	}

    public static void main(String[] args) {
      
    }
}

静态内部类

常见的内部类有四种,成员内部类、局部内部类、匿名内部类和静态内部类。静态内部类不能访问外部类的所有成员变量,静态内部类可以访问外部类的所有静态变量,私有的静态变量也可以访问,外部类不能声明为static。静态内部类一般在建造者模式中比较常用。

public class Test 
  	private Test(){}
    
		private static class SingleTest {
      public static final Test test = new Test();
    }

		public static Test getInstance(){
      return SingleTest.test;
    }
}