我从“Java. How to Program”一书中学习 Java P. & H. Deitel
在第 216 页上有一个示例,它在其中一个变量中使用了 final
private static final Random randomNumbers = new Random();
据我了解变量中的声明 final 意味着,该变量是一种常量,这意味着初始化时您不能再更改它。
但是上面的对象(变量)在程序中使用了两次以返回随机数
int die1 = 1 + randomNumbers.nextInt( 6 );
int die2 = 1 + randomNumbers.nextInt( 6 );
它返回 2 个不同的(随机)值。
我想我在这里失去了一些东西。程序运行良好,但我不明白在对象声明中使用
final
的目的是什么? 最佳答案
final
意味着变量不能在这里改变它的值——事实上它不能也没有。
这里 randomNumbers
变量的值是对 Random
实例的引用。它指的是同一个实例,即使每次调用 nextInt
时该实例产生(可能)不同的数字。
区分不改变值的变量和它所指的不改变内部状态的对象很重要。再举一个例子,你可以有这样的事情:
public class Person {
private final List<Person> friends = new ArrayList<Person>();
public void addFriend(Person friend) {
friends.add(friend);
}
...
}
这里我们只有一个列表——你永远不能改变
friends
来引用不同的对象——但我们仍然可以改变变量引用的列表。关于java - 为什么这里使用final关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13562065/