如何同步全局变量Java


String compBut1 = "D0", compBut2 = "D0", compBut3 = "D0", playaBut1 = "D0", playaBut2 = "D0", playaBut3 = "D0";  
public void changeOver()
{
    String[] set = {playaBut2, playaBut3, playaBut1};
    int butPos = Arrays.asList(set).indexOf(positions[posOld]);
    set[butPos] = positions[posNew];
}

我必须做些什么来确保每当数组集中变量的值发生变化时,全局变量也会发生变化。我可以在调试器中看到,当我在方法内部时,值会被更改,但一旦我退出,更改就会被丢弃。

String[] set = {playaBut2, playaBut3, playaBut1};

您认为上面存储了对各个字符串的引用,因此每当这些字符串中的任何一个发生更改时,引用的字符串都会发生更改。

然而,它实际做的是将值复制到String的新实例中,并生成它们的数组。出于安全考虑,Java不允许存储引用(指针为C/C++(。

您应该做的是:创建一个全局声明的字符串数组,并直接在函数中更改它们。

String[] compBut={"D0","D0","D0"};
String[] playaBut={"D0","D0","D0"};
public void changeOver(){
  int butPos = Arrays.asList(playaBut).indexOf(positions[posOld]);
  playaBut[butPos] = positions[posNew];
}

相关内容

  • 没有找到相关文章

最新更新