gpt4 book ai didi

java - 为什么这里使用final关键字?

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:02 24 4
gpt4 key购买 nike

我从“Java.How to Program”P. & H. Deitel 一书中学习 Java在第 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com