-
概述
final 和 static final 都是Java中的关键字,它们都用于限制变量的修改。但是它们之间还是有区别的。final 关键字用于修饰变量,表示该变量的值在初始化之后不能再被修改。
static final 关键字用于修饰变量,表示该变量是静态的,它的值在初始化之后也不能被修改。同时,static final 变量是一个常量,它只有一个拷贝存在于内存中,因此可以被所有实例共享。
另外,static final 还可以用于修饰方法,表示该方法是一个常量方法,即无论何时调用该方法,它的返回值都是固定的。常量方法通常用于执行常量计算或返回常量值。
总之,final 修饰的变量只是不可修改,而 static final 修饰的变量是静态常量,它们的值在初始化之后都不能被修改。 -
final 修饰变量的示例:
public class Example { public void exampleMethod() { final int x = 10; // 定义一个 final 变量 x,值为 10 // x = 5; // 试图修改 x 的值会导致编译错误 System.out.println(x); // 输出 10 } }在上面的示例中,我们定义了一个 final 变量 x,并将其初始化为 10。因为 x 是 final 的,所以它的值不能再被修改。如果我们尝试将 x 的值改为 5,就会在编译时发生错误。
-
static final 修饰变量的示例:
public class Example { public static final int MAX_VALUE = 100; // 定义一个静态常量 MAX_VALUE,值为 100 public void exampleMethod() { // MAX_VALUE = 50; // 试图修改 MAX_VALUE 的值会导致编译错误 System.out.println(MAX_VALUE); // 输出 100 } }在上面的示例中,我们定义了一个 static final 的变量 MAX_VALUE,并将其初始化为 100。因为 MAX_VALUE 是静态常量,所以它的值不能再被修改,并且它只有一个拷贝存在于内存中,可以被所有实例共享。如果我们尝试将 MAX_VALUE 的值改为 50,就会在编译时发生错误。
-
static final 修饰方法的示例:
public class Example { public static final int MAX_VALUE = 100; // 定义一个静态常量 MAX_VALUE,值为 100 public static final int add(int a, int b) { return a + b + MAX_VALUE; } public void exampleMethod() { int result = Example.add(5, 10); // 调用常量方法 add,返回值为 115 System.out.println(result); } }在上面的示例中,我们定义了一个静态常量方法 add,该方法返回两个整数的和以及一个静态常量 MAX_VALUE。因为 add 是静态常量方法,所以无论何时调用该方法,它的返回值都是固定的。在 exampleMethod 中,我们调用 add 方法,并将其返回值存储在 result 变量中,然后将 result 输出到控制台。由于 MAX_VALUE 的值是 100,因此 add 方法返回的值应该是 115。