gpt4 book ai didi

java - 了解Java按值传递的概念吗?

转载 作者:行者123 更新时间:2023-12-02 04:54:11 26 4
gpt4 key购买 nike

Java 中最常见问题之一的最受欢迎答案之一是:

Java is always pass-by-value. The difficult thing to understand is that Java passes objects as references and those references are passed by value.

那么“Java 将对象作为引用传递,并且这些引用按值传递”是什么意思呢?意思是?

这是否意味着:

将原始变量指向的内存位置复制为新临时变量的值? (如果是这样的话,函数内部所做的所有更改都会反射(reflect)在原始函数中,对吧?)

如果不是,那是什么意思?

最佳答案

将对象引用视为“指向值的指针”

当您将值传递给方法时,您会传入指针,因此两个指针(方法中的指针和您传入的指针)指向同一对象。

考虑一下

public static void main(String[] args){
Foo cl = new Foo();
cl.z= 100;
method(cl);
System.out.println(cl.z);

}

private static void method(Foo bar){
bar.z=10;
}

在调用method之前,cl.z将为100,但传入它之后,它将等于10。

不正确的是:

public static void main(String[] args){
Foo cl = new Foo();
cl.z= 100;
method(cl);
System.out.println(cl.z);

}

private static void method(Foo bar){
bar = new Foo();
bar.z=10000;
}

这不会打印出 10000,因为您无法分配指针来引用不同的对象

关于java - 了解Java按值传递的概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28934746/

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