gpt4 book ai didi

java - 将参数传递给Java中的方法

转载 作者:行者123 更新时间:2023-11-29 05:58:53 26 4
gpt4 key购买 nike

我对一件微不足道的事情感到困惑 - 将参数传递给方法并更改它们的值......我最好给你一些代码:

public class Test {
public static void main(String[] args) {
Integer val = new Integer(41);
upd(val);
System.out.println(val);

Man man = new Man();
updMan(man);
System.out.println(man.name);
}

static void upd(Integer val) {
val = new Integer(42);
}

static void updMan(Man man) {
man.name = "Name";
}

static class Man {
String name;
}
}

您能解释一下为什么我传递的 Integer 对象没有更新而 Man 对象更新了吗? Integer 和 Man 对象不是通过引用传递的(由于它们的非原始性质)吗?

最佳答案

因为对于 Integer,您正在创建一个新对象。对于 Man,您只需更改其值之一,对象 man 保持不变。

考虑以下几点:

static void updMan(Man man) {
man = new Man();
man.name = "Another Man";
}

这也不会改变您最初的 man

--编辑

您可以通过以下方式“模拟”Integer 的可变性:

static void upd(Integer val) {
try {
Field declaredField = val.getClass().getDeclaredField("value");
declaredField.setAccessible(true);
declaredField.set(val, 42);
} catch (Exception e) {
}
}

关于java - 将参数传递给Java中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946523/

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