Java 中的静态变量:什么是静态块和方法 [示例]
静态可以是:
- 静态变量
- 静态方法
- 静态代码块。
我们先来看看静态变量和静态方法。
什么是 Java 中的静态变量?
Java 中的静态变量 是属于类的变量,仅在执行开始时初始化一次。它是属于类而不属于对象(实例)的变量。静态变量仅在执行开始时初始化一次。这些变量将首先被初始化,然后再初始化任何实例变量。
- 由类的所有实例共享的单个副本
- 静态变量可以通过类名直接访问,不需要任何对象
语法:
<class-name>.<variable-name>
什么是 Java 中的静态方法?
Java 中的静态方法 是属于类而不属于对象的方法。静态方法只能访问静态数据。它是属于类而不属于对象(实例)的方法。静态方法只能访问静态数据。它不能访问非静态数据(实例变量)。
- 静态方法只能调用其他静态方法,不能从中调用非静态方法。
- 静态方法可以通过类名直接访问,不需要任何对象
- 静态方法无论如何都不能引用“this”或“super”关键字
语法:
<class-name>.<method-name>
注意: main 方法是静态的,因为在任何实例化发生之前,应用程序必须可以访问它才能运行它。
让我们通过一些练习来了解静态关键字的细微差别!
示例:如何调用静态变量和方法
步骤 1) 将以下代码复制到编辑器中
public class Demo{ public static void main(String args[]){ Student s1 = new Student(); s1.showData(); Student s2 = new Student(); s2.showData(); //Student.b++; //s1.showData(); } } class Student { int a; //initialized to zero static int b; //initialized to zero only when class is loaded not for each object created. Student(){ //Constructor incrementing static variable b b++; } public void showData(){ System.out.println("Value of a = "+a); System.out.println("Value of b = "+b); } //public static void increment(){ //a++; //} }
步骤 2) 保存并编译代码。运行代码为 java Demo .
步骤 3) 预期输出如下所示
下图展示了如何创建引用变量和对象,以及不同实例如何访问静态变量。
第 4 步) 可以使用语法 ClassName.Variable_Name 从类外部访问静态变量 .取消注释 # 7 &8 行。保存、编译和运行。观察输出。
Value of a = 0 Value of b = 1 Value of a = 0 Value of b = 2 Value of a = 0 Value of b = 3
第 5 步) 取消注释第 25,26 和 27 行。保存,编译并运行。
error: non-static variable a cannot be referenced from a static context a++;
第 6 步) 错误 =?这是因为无法访问实例变量“a ”来自java静态类方法“increment “。
什么是 Java 中的静态块?
静态块 是 Java 类中的一个语句块,将在类首次加载到 JVM 时执行。 静态块有助于初始化静态数据成员 ,就像构造函数帮助初始化实例成员一样。
class Test{ static { //Code goes here } }
下面的程序是java静态块的例子。
示例:如何访问静态块
public class Demo { static int a; static int b; static { a = 10; b = 20; } public static void main(String args[]) { System.out.println("Value of a = " + a); System.out.println("Value of b = " + b); } }
您将获得程序的以下输出。
Value of a = 10 Value of b = 20
java