java - 有些参数可以在方法中更改,但有些参数不能在 java 中更改

标签 java

public class test {
    public static void main(String[] args) {
        boolean flag=false;
        char[] c=new char[5];
        c[0]='e';
        read(flag, c);

        System.out.println(c[0]);
        System.out.println(flag);
    }

   public static void read(boolean flag, char[] c){
        flag=true;
        c[0]='a';
   }
}

在上面的代码中,我发现一个有趣的问题:char[] c已更改并正确打印结果,但 boolean 标志没有更改!我不知道这是怎么发生的? 现在,我也想更改标志,该怎么做? 感谢您的帮助!

最佳答案

boolean 值按值传递。如果您在 read 方法中更改它,则只会更改本地副本,而不会更改外部值。

但是,对 c引用是按值传递的,从而有效地使 c 引用的数组按引用传递。因此,在这里更改 c 的元素确实会影响外部数组。

关于java - 有些参数可以在方法中更改,但有些参数不能在 java 中更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422562/

相关文章:

java - 按钮单击操作

java - 如何在OrientDB中通过Graph API向Vertex类添加属性?

java - 如何将通量链接到另一个通量/单声道并施加另一个背压?

java - 程序无法正常运行

java - firebase 中的数据更改是从第二个按钮单击发生的,第一次单击不执行任何操作

java - 将帧保存到文件 onFrameAvailable [Google Project Tango]

java - 专用 Android Activity 为应用程序初始化数据和库

java - 无法解析类型。它间接引用所需的 .class 文件

java - 从填充的 HashMap 中检索到的 Arraylist 不断返回一个空的 arraylist

javac 无法找到导入