📜  java中的final vs static关键字(1)

📅  最后修改于: 2023-12-03 15:16:28.994000             🧑  作者: Mango

Java中的final vs static关键字

Java中的final和static关键字都是用来修饰变量的,但它们的作用却是不同的。

Final关键字

Final关键字用来修饰不可改变的变量,也就是常量。一旦被声明为final,变量的值就不能再改变了。

语法
final int NUM = 10;
特性
  1. 声明为final的变量必须要被初始化,否则会报错。

  2. final变量不能被重新赋值。

  3. final变量必须在声明时或在构造函数内进行初始化。

  4. final变量在多线程环境下是安全的,因为final变量只有一份拷贝。

  5. final也可以修饰类、方法、和参数。

示例
final int NUM = 10;
NUM = 20; // 报错:不能修改final变量
Static关键字

Static关键字用来修饰静态变量或静态方法。当类被加载时,静态变量会被初始化,静态方法可以通过类名直接调用。

语法
static int COUNT = 0;
static void printCount() {
  System.out.println(COUNT);
}
特性
  1. 静态变量和静态方法可以在不创建对象的情况下调用。

  2. 静态变量和静态方法属于类,而不属于对象。

  3. 静态变量和静态方法只会被初始化一次。

  4. 静态变量和静态方法可以通过类名直接调用,而无需创建对象。

示例
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 | | 对象使用 | 每个对象都有独立的拷贝 | 所有对象共享同一份拷贝 |

总结

Final和Static关键字都是用来修饰变量的,但它们的作用和使用场景却不同。通过了解它们的特性和区别,可以更好地在编写Java程序时合理使用这两个关键字。