static关键字表示静态的,用于修饰成员变量、成员方法、代码块

静态变量

  • static修饰的成员变量,叫静态变量,或者类变量
  • 被static修饰的变量,被类中所有对象共享
  • 不能修饰局部变量
  • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

静态方法

  1. 使用static修饰的成员方法,称为静态方法,不需要创建实例,就可以调用静态方法
  2. 工具类会这么用,不需要创建对象,用起来方便

修饰代码块

代码块指的是大括号括起来的一段代码   {}

  • 普通代码块
package com.xdl.java.pkg06;

public class TestCodeBlock1 {
	public static void main(String[] args) {
		// 定义普通代码块
		{
			// 局部变量
			int x = 100;
			System.out.println("普通代码块x=" + x);
		}

		int x = 10;
		System.out.println("代码块作用域之外x=" + x);
	}
}

Java静态变量使用关键字是什么 java定义静态变量的关键字_代码块

  • 构造代码块
package com.xdl.java.pkg06;

public class Person3 {
	//构造方法
	public Person3(){
		System.out.println("构造方法执行了");
	}
	
	{
		System.out.println("构造代码块");
	}
	//静态代码块
	static{
		System.out.println("静态代码块");
	}
	
}
package com.xdl.java.pkg06;

public class TestPerson3 {
	public static void main(String[] args) {
		new Person3();
		new Person3();
		new Person3();
	}
}

Java静态变量使用关键字是什么 java定义静态变量的关键字_代码块_02

  • 静态代码块(只运行一次,最先运行,一般用于加载资源,例如JDBC加载mysql驱动)

单例模式

  1. 在一个类的程序运行期间,有且只有一个实例
  2. 私有的构造方法,构造必须是私有的
package com.xdl.java.pkg06;

public class Single {
	// 创建一个静态私有对象
	private static Single INSTANCE = new Single();

	// 私有的构造方法,构造必须是私有的
	private Single() {
	}

	// 返回静态私有对象
	public static Single getInstance() {
		return INSTANCE;
	}
}
package com.xdl.java.pkg06;

public class TestSingle {
	public static void main(String[] args) {
		Single s1 = Single.getInstance();
		Single s2 = Single.getInstance();

		// 比较
		System.out.println(s1 == s2);
	}
}

结果:true