当使用Java编写代码时,经常可以看到使用 static
关键字定义的变量、方法或类。那么,static
的作用到底是什么呢?本攻略将详细讲解 Java 中 static 的作用。
一、什么是 static
Java 中,static
是一个修饰符,当 static
用来修饰类的方法、变量或代码块时,它就与类本身关联,而非与类的实例对象关联,使得这些变量和方法可以在类被实例化前使用。
二、static 变量的作用
Java 中使用 static
关键字修饰的变量称为静态变量,也叫类变量,它与类无关,与实例对象无关。换句话说,静态变量是所有实例共享的,只会保存一份,不管被实例化多少次,都只有一份。
示例 1:计数器
public class Counter {
public static int count = 0;
public Counter() {
count++;
}
}
public class Test {
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter c3 = new Counter();
System.out.println("Count is " + Counter.count); // Output: 3
}
}
在上面的代码中,Counter
类中的 count
变量被定义为静态变量,所有 Counter
类的对象将共享这个变量。Counter()
构造方法会在每次创建 Counter
类对象时自动调用,并且为 count
变量增加 1。当创建三个对象时,count
的值将会是 3。
示例 2:常量
静态变量也可以作为一种常量使用,声明为 final
标志符的静态变量,一旦赋初始值后,就无法再修改。
public class MathUtil {
public static final double PI = 3.141592653589793;
}
public class Test {
public static void main(String[] args) {
System.out.println(MathUtil.PI); // Output: 3.141592653589793
}
}
在上面的代码中,PI
被定义为一个静态常量,同时标识了 final
关键字。由于这是一个常量,所以它的值不能被改变,且一般会使用大写字母命名常量名称。
三、static 方法的作用
Java 中使用 static
关键字修饰的方法称为静态方法,它与类相关,而不是与实际对象相关。
与静态变量类似,静态方法也可以在被任何实例化对象之前调用。它们属于整个类而不是某个实例,因此无法引用实例变量或者实例方法。
示例 3:计算一个数的平方
public class MathUtil {
public static int square(int num) {
return num * num;
}
}
public class Test {
public static void main(String[] args) {
int num = 5;
int result = MathUtil.square(num);
System.out.println(result); // Output: 25
}
}
在上面的代码中,MathUtil
类中的 square()
方法定义为静态方法,它接收一个整数参数 num
,并返回一个整数 num * num
,即传入数值的平方。在 main
方法中,我们没有创建 MathUtil
类的对象,而是直接通过类名调用静态方法。
四、static 代码块的作用
Java 中使用 static 关键字修饰的代码块称为静态代码块。它只有在类加载时执行一次,所有的实例共用同一份代码块,一般用于初始化静态变量或执行初始化操作。
示例 4:输出类的信息
public class MyClass {
static {
System.out.println("Class loaded.");
}
}
public class Test {
public static void main(String[] args) {
MyClass myClass = new MyClass();
}
}
在上面的代码中,MyClass
类中的 static
代码块在类加载时执行一次,并输出 "Class loaded.",无论有没有被实例化,这行代码只会执行一次。
五、小结
在 Java 中,static
关键字被应用于类的变量、方法和代码块,它使这些元素与实例无关,与类相关。使用静态变量和静态方法,可以避免在程序运行时创建不必要的实例。使用静态代码块,可以在类被加载时执行代码。了解这些,可以使程序更有效率和正确。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JAVA中static的作用 - Python技术站