gpt4 book ai didi

java - 我的最终数组是如何被修改的?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:14 24 4
gpt4 key购买 nike

我有类似的东西:

(SomeClass)
public static final float[][][] values = {...};

public float[][][] variable = values;

所以,我创建了这个类的一个新实例,并将 values 传递给这个类的一个 public 成员,就像我在上面所做的那样。

事情是,当我现在使用 variable 并更改它和其他内容时,它会针对 SomeClass 的所有实例进行更改。

final 我以为声明后不能修改?那么,为什么 variable 不是更像 values 的副本,而是像 static 一样被修改,但不是 final 变量?

最佳答案

当你这样做的时候会发生什么

public static final float[][][] values = {...};

public float[][][] variable = values;

valuesvariable 都“指向”相同的引用(即内存中的相同位置)。

final 的意思是您不能更改该引用(即您不能使变量引用内存中的另一个位置)。您仍然可以修改变量引用的对象。

关于java - 我的最终数组是如何被修改的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921678/

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