3 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
Java總是按值傳遞參數(shù),而不是通過引用傳遞參數(shù)。
讓我通過一個(gè)例:
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"); ?????}}
我將分步驟解釋這一點(diǎn):
聲明名為
f
類型Foo
并將其分配給一個(gè)新的類型對(duì)象。Foo
帶有屬性"f"
.Foo?f?=?new?Foo("f");
從方法方面來說,是類型的引用。
Foo
有名字a
被聲明,并且它最初被分配給null
.public?static?void?changeReference(Foo?a)
正如您所稱的方法
changeReference
,參考文獻(xiàn)a
將分配給作為參數(shù)傳遞的對(duì)象。changeReference(f);
聲明名為
b
類型Foo
并將其分配給一個(gè)新的類型對(duì)象。Foo
帶有屬性"b"
.Foo?b?=?new?Foo("b");
a = b
正在重新分配引用。a
不f
屬性為"b"
.如你所言
modifyReference(Foo c)
方法,引用c
被創(chuàng)建并分配給具有屬性的對(duì)象。"f"
.c.setAttribute("c");
將更改引用對(duì)象的屬性。c
指向它,與引用的對(duì)象相同f
指著它。
我希望您現(xiàn)在了解如何將對(duì)象作為參數(shù)傳遞到Java中:)

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
因?yàn)镴ava嚴(yán)格地“按值傳遞”,甚至對(duì)象的引用也是通過值傳遞的,所以第二段代碼將不能像預(yù)期的那樣工作。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
Foo myFoo;{ //Method call starts here Foo foo; foo = myFoo; Foo f = new Foo(); foo = f;} //Method call ends here
添加回答
舉報(bào)