Java AP Comp Sci打印方法

Java AP Comp Sci打印方法,java,pointers,Java,Pointers,问题是调用方法print时输出什么?我想答案是0 10 aaa,但答案是0 11 aaa,有人能解释一下原因吗?谢谢现在是0 11 aaa changeParams中的A[0]++会影响数组中存储的值,因为指针会传递到方法中,因此操作会影响共享数据。调试并逐步完成 public void changeParams(int k, int[] A, String s){ k++; A[0]++; s += "X"; } public void print(){ int

问题是调用方法print时输出什么?我想答案是0 10 aaa,但答案是0 11 aaa,有人能解释一下原因吗?谢谢

现在是0 11 aaa

changeParams中的A[0]++会影响数组中存储的值,因为指针会传递到方法中,因此操作会影响共享数据。调试并逐步完成

public void changeParams(int k, int[] A, String s){
    k++;
    A[0]++;
    s += "X";
}
public void print(){
    int k = 0;
    int[] A = {10, 20};
    String s = "aaa";
    changeParams(k, A, s);
    System.out.println(k + " " + A[0] + " " + s);
}
它是0.11 aaa

changeParams中的A[0]++会影响数组中存储的值,因为指针会传递到方法中,因此操作会影响共享数据。调试并逐步完成

public void changeParams(int k, int[] A, String s){
    k++;
    A[0]++;
    s += "X";
}
public void print(){
    int k = 0;
    int[] A = {10, 20};
    String s = "aaa";
    changeParams(k, A, s);
    System.out.println(k + " " + A[0] + " " + s);
}
答案是0 11 aaa。原因是Java是按值传递的

这就是它的意思

在changeparms方法中,您影响了它的所有三个参数——传入的int、数组和字符串

当你们通过价值传递某物时,你们是某种价值。这意味着,一般来说,您不能破坏或篡改传入的原始值——关于原语和不可变类。字符串是不可变的,所以对它执行的任何操作都将生成一个新字符串,而对它执行的操作将只存在于该方法中

数组。如果您传入一个数组,您就有能力索引到该数组中并更改任何您喜欢的值,这对于您的程序的意图可能是可取的,也可能是不可取的

例如,如果您传入一个可变的对象-日历,也同样如此;如果您传入一个日历实例,您将能够修改它的状态星期几、小时、秒、毫秒等,并且在以后尝试将同一实例用于其他内容时可能会造成严重破坏

这就是为什么唯一改变的是11。[0]处的值已递增,而且由于数组不是不可变的,因此您实际上是在更改给定位置处数组的值。

答案是0 11 aaa。原因是Java是按值传递的

这就是它的意思

在changeparms方法中,您影响了它的所有三个参数——传入的int、数组和字符串

当你们通过价值传递某物时,你们是某种价值。这意味着,一般来说,您不能破坏或篡改传入的原始值——关于原语和不可变类。字符串是不可变的,所以对它执行的任何操作都将生成一个新字符串,而对它执行的操作将只存在于该方法中

数组。如果您传入一个数组,您就有能力索引到该数组中并更改任何您喜欢的值,这对于您的程序的意图可能是可取的,也可能是不可取的

例如,如果您传入一个可变的对象-日历,也同样如此;如果您传入一个日历实例,您将能够修改它的状态星期几、小时、秒、毫秒等,并且在以后尝试将同一实例用于其他内容时可能会造成严重破坏


这就是为什么唯一改变的是11。[0]处的值已递增,而且由于数组不是不可变的,因此您实际上是在更改给定位置处数组的值。

肯定有一种确定的方法来判断,呃?这个问题似乎离题了,因为它没有提出一个合适的问题来解决。我读过一本Java书籍,但我只是对这个代码中什么是不可变的概念感到困惑。当然,有一个明确的方法来说明,呃?这个问题似乎离题了,因为它没有提出一个合适的问题来解决。我读过一本Java书籍,但我只是对这个代码什么是不可变的概念感到困惑哦,所以它只影响数组,而不是int和String?你能至少投票支持我的答案并将其标记为正确吗?哦,所以它只影响数组数组而不是int和String?你能至少投票支持我的答案并把它标记为正确吗?