java - 将图表[]从一个变量复制到另一个变量,然后更改单个字符

标签 java

我有这个变量:

    private String[] secretWordDictionary = { "bulbasaur", "ivysaur", "venusaur"};

并且正在调用此方法:

        public void generateSecretWord() {
    char[] secretWord = secretWordDictionary[(int) (Math.random() * 25)].toCharArray();
    disguisedWord = secretWord;
    secretWord[2] = '?';
    System.out.println(secretWord);
    System.out.println(disguisedWord);
   }

现在,当我运行代码时,我得到以下输出:

    bu?basaur
    bu?basaur

所以我确定从字符到字符串的转换以及数字生成器确实有效。在该方法中,我制作了另一个 char[] disguiseWord 并将 SecretWord 的字符分配给它。然后,我将 SecretWord 的第三个索引字符替换为“?”。那么为什么输出包含“?”对于secretWord 和disguiseWord 来说?我只更改了 SecretWord 的第三个索引字符而不是 disguiseWord 对吗?

最佳答案

Arrays in Java are objects.因此,disguishedWord = SecretWord; 不会将 secretWord 复制到 disguishedWord,而只是复制对同一对象的引用.

由于 disguishedWordsecretWord 指向同一对象,因此对 secretWord 的每次更改也适用于 disguishedWord

为了解决这个问题,clone the array :

disguisedWord = secretWord.clone();
secretWord[2] = '?';

这将产生预期的结果:

bu?basaur
bulbasaur

关于java - 将图表[]从一个变量复制到另一个变量,然后更改单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144686/

相关文章:

java - 将java程序(以表单)输入的值添加到sql数据库:

java - blpapi 和 Bloomberg Excel 加载项的不同数据值响应

java - jabba中的 'adopt'和 'adopt-openj9'有什么区别

java - mkdirs 在 Windows 7 中不工作

java - 未从 Android Geofence 事件中收到 Intent

java - Groovy - 字符串到时间

java - LIBGDX/BOX2D : Re-sizing Touchpad is not working when the Table. setBounds 被调用

java - 我将 JSON 插入 mysql 表的语法有什么问题?

Java string.replace(old, new) 算多少个被替换?

java - 在此 Gridview 中显示错误 java.lang.NullPointerException