📅  最后修改于: 2023-12-03 15:16:28.994000             🧑  作者: Mango
Java中的final和static关键字都是用来修饰变量的,但它们的作用却是不同的。
Final关键字用来修饰不可改变的变量,也就是常量。一旦被声明为final,变量的值就不能再改变了。
final int NUM = 10;
声明为final的变量必须要被初始化,否则会报错。
final变量不能被重新赋值。
final变量必须在声明时或在构造函数内进行初始化。
final变量在多线程环境下是安全的,因为final变量只有一份拷贝。
final也可以修饰类、方法、和参数。
final int NUM = 10;
NUM = 20; // 报错:不能修改final变量
Static关键字用来修饰静态变量或静态方法。当类被加载时,静态变量会被初始化,静态方法可以通过类名直接调用。
static int COUNT = 0;
static void printCount() {
System.out.println(COUNT);
}
静态变量和静态方法可以在不创建对象的情况下调用。
静态变量和静态方法属于类,而不属于对象。
静态变量和静态方法只会被初始化一次。
静态变量和静态方法可以通过类名直接调用,而无需创建对象。
public class MyClass {
static int COUNT = 0;
public void increment() {
COUNT++;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
obj1.increment();
obj2.increment();
System.out.println(MyClass.COUNT); // 输出2
}
}
| 区别 | final | static | | -------- | ----------- | -------------------- | | 变量类型 | 常量 | 变量(只初始化一次) | | 是否可变 | 不可变 | 可变 | | 局部变量 | 可以使final | 不允许被声明为static | | 对象使用 | 每个对象都有独立的拷贝 | 所有对象共享同一份拷贝 |
Final和Static关键字都是用来修饰变量的,但它们的作用和使用场景却不同。通过了解它们的特性和区别,可以更好地在编写Java程序时合理使用这两个关键字。