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
提交
取消
