Java 静态方法,变量和代码块
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: 预期输出如下所示,
C:\Tastones>java Demo
Value of a = 0
Value of b = 1
Value of c = 0
Value of d = 2
下图显示了如何创建引用变量和对象,以及不同实例访问静态变量。
![Java 静态方法和变量](/img/static variable.jpg)
步骤 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: 错误发生的原因是因为无法从 Java 静态类方法 increment
访问实例变量 a
。
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