3 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
Java总是按值传递参数,而不是通过引用传递参数。
让我通过一个例:
public class Main{ public static void main(String[] args) { Foo f = new Foo("f"); changeReference(f); // It won't change the reference! modifyReference(f); // It will modify the object that the reference variable "f" refers to! } public static void changeReference(Foo a) { Foo b = new Foo("b"); a = b; } public static void modifyReference(Foo c) { c.setAttribute("c"); }}
我将分步骤解释这一点:
声明名为
f
类型Foo
并将其分配给一个新的类型对象。Foo
带有属性"f"
.Foo f = new Foo("f");
从方法方面来说,是类型的引用。
Foo
有名字a
被声明,并且它最初被分配给null
.public static void changeReference(Foo a)
正如您所称的方法
changeReference
,参考文献a
将分配给作为参数传递的对象。changeReference(f);
声明名为
b
类型Foo
并将其分配给一个新的类型对象。Foo
带有属性"b"
.Foo b = new Foo("b");
a = b
正在重新分配引用。a
不f
属性为"b"
.如你所言
modifyReference(Foo c)
方法,引用c
被创建并分配给具有属性的对象。"f"
.c.setAttribute("c");
将更改引用对象的属性。c
指向它,与引用的对象相同f
指着它。
我希望您现在了解如何将对象作为参数传递到Java中:)
江户川乱折腾
TA贡献1851条经验 获得超5个赞
Foo myFoo;{ //Method call starts here Foo foo; foo = myFoo; Foo f = new Foo(); foo = f;} //Method call ends here
添加回答
举报
0/150
提交
取消