Java static用法详解(附带实例)
static 是 Java 非常重要的关键字之一,用于构造静态变量、静态常量、静态方法和静态初始化块,接下来将逐一讲解它们的用法。
静态变量不属于任何一个具体对象,而是属于整个类。所有该类的对象共享同一个静态变量。
【实例】在一个项目中创建类 VariableDemo,实现创建静态变量,代码如下:
在访问静态变量时,由于静态变量不依附某个对象,所以只需通过 “类名.静态变量” 的方式访问。
【实例】在一个项目中创建类 VariableDemo,实现访问静态变量,代码如下:
【实例】在一个项目中创建类 VariableDemo,实现创建静态常量,代码如下:
静态方法不能直接访问非静态成员(成员变量和成员方法),因为静态方法在类加载时就存在了,而此时非静态成员可能还没有被创建。
【实例】在一个项目中创建类 VariableDemo,实现创建静态方法,代码如下:
【实例】在一个项目中创建类 VariableDemo,实现调用静态方法,代码如下:
使用静态方法时需要注意,静态方法可以访问静态方法,非静态方法可以访问静态方法,静态方法不可以访问非静态方法,因为非静态方法或非静态变量的调用要先创建对象,而在调用静态方法时可能对象并没有被初始化。
此外,在静态方法中不可以使用关键字 this,因为静态方法本身与对象无关,而是属于类的级别。
【实例】在一个项目中创建类 VariableDemo,实现调用静态初始化块,代码如下:
Java静态变量
用关键字 static 修饰的成员变量称为静态变量,也叫类变量。静态变量不属于任何一个具体对象,而是属于整个类。所有该类的对象共享同一个静态变量。
【实例】在一个项目中创建类 VariableDemo,实现创建静态变量,代码如下:
public class VariableDemo { // 静态变量 static int num; static int num2; }在上述代码中,我们可以看出关键字 static 修饰的成员变量就是静态变量。每个类可以有多个静态变量,它们是类级变量,而非对象级变量。
在访问静态变量时,由于静态变量不依附某个对象,所以只需通过 “类名.静态变量” 的方式访问。
【实例】在一个项目中创建类 VariableDemo,实现访问静态变量,代码如下:
public class VariableDemo { // 静态变量 static int num; static int num2; public static void main(String[] args) { VariableDemo05.num = 10; VariableDemo05.num2 = 20; System.out.println("The number is:" + VariableDemo.num); System.out.println("The number2 is:" + VariableDemo.num2); } }程序运行结果为:
The number is:10
The number2 is:20
Java静态常量
静态常量(static final)与静态变量本质一样,也属于类的级别。静态常量值会在类加载期间被确定,并在整个程序执行期间保持不变。静态常量通常被用来表示不可变的值。【实例】在一个项目中创建类 VariableDemo,实现创建静态常量,代码如下:
public class VariableDemo { final static int NUM = 10; final static int NUM2 = 20; }在上述代码中,我们可以看出定义静态常量时需要使用关键字 final,关键字 final 在后续的课程中会详细讲解。代码中常量的名称是大写,对此没有明确规定,即使按照变量规定去写常量也不会出现编译错误,这么做能够让你在阅读代码时清晰识别出哪些是静态常量。
Java静态方法
静态方法可以直接通过类名调用,而不需要创建对象。静态方法不能直接访问非静态成员(成员变量和成员方法),因为静态方法在类加载时就存在了,而此时非静态成员可能还没有被创建。
【实例】在一个项目中创建类 VariableDemo,实现创建静态方法,代码如下:
public class VariableDemo { // 创建静态方法 public static void testDemo() { System.out.println("静态方法"); } }在上述代码中,我们可以看出关键字 static 修饰的方法是静态方法。
【实例】在一个项目中创建类 VariableDemo,实现调用静态方法,代码如下:
public class VariableDemo { // 创建静态方法 public static void testDemo() { System.out.println("静态方法"); } public static void main(String[] args) { // 调用静态方法 VariableDemo.testDemo(); VariableDemo variableDemo = new VariableDemo(); variableDemo.testDemo(); } }程序运行结果为:
静态方法
静态方法
使用静态方法时需要注意,静态方法可以访问静态方法,非静态方法可以访问静态方法,静态方法不可以访问非静态方法,因为非静态方法或非静态变量的调用要先创建对象,而在调用静态方法时可能对象并没有被初始化。
此外,在静态方法中不可以使用关键字 this,因为静态方法本身与对象无关,而是属于类的级别。
Java静态初始化块
静态初始化块是一个被关键字 static 声明的代码块,没有任何参数或返回值。在 Java 编程语言中,可以使用静态初始化块来初始化静态变量。静态初始化块在类被加载时执行,而且只执行一次。【实例】在一个项目中创建类 VariableDemo,实现调用静态初始化块,代码如下:
public class VariableDemo { static int num; static String name; // 静态初始化块给静态变量赋值 static { num = 10; name = "静态初始化块"; } public static void main(String[] args) { System.out.println(VariableDemo.num); System.out.println(VariableDemo.name); } }程序运行结果为:
10
静态初始化块