gpt4 book ai didi

java - Java 中的值传递

转载 作者:行者123 更新时间:2023-12-01 06:58:06 25 4
gpt4 key购买 nike

import java.util.Arrays;
public class Test {
public static void main(String... args) {
String[] strings = new String[] { "foo", "bar" };
changeReference(strings);
System.out.println(Arrays.toString(strings)); // still [foo, bar]
changeValue(strings);
System.out.println(Arrays.toString(strings)); // [foo, foo]
}
public static void changeReference(String[] strings) {
strings = new String[] { "foo", "foo" };
}
public static void changeValue(String[] strings) {
strings[1] = "foo";
}
}

谁能解释一下这些问题吗?

  1. 什么是字符串[]。它是字符串对象还是包含对象数组的字符串对象。
  2. changeReference() 和changeValue() 函数执行什么操作并返回什么?
  3. Java 支持引用传递吗?

最佳答案

  1. strings 是一个 String 数组。出于我们的目的,数组是对象,这意味着它们是引用类型。

  2. changeReference 没有做任何有用的事情。它接收对strings的引用,但它通过值接收该引用。在函数内重新分配strings对传入的strings没有影响——它只是用对新数组的引用替换引用的本地副本。另一方面,changeValue 修改 strings 引用的数组对象。由于它是引用类型,因此变量引用同一个对象。

  3. 不,不支持“按引用传递”。 Java 可以传递引用,但它是按值传递的。简而言之,您可以更改传入的对象,但不能以调用者可以看到的方式替换该对象。

关于java - Java 中的值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277740/

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