第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中通過引用傳遞字符串?

在Java中通過引用傳遞字符串?

梵蒂岡之花 2019-11-11 14:07:35
我習慣在中執(zhí)行以下操作C:void main() {    String zText = "";    fillString(zText);    printf(zText);}void fillString(String zText) {    zText += "foo";}輸出為:foo但是,在Java中,這似乎不起作用。我認為是因為該String對象是復制的,而不是通過referenced傳遞的。我以為字符串是對象,總是通過引用傳遞。這里發(fā)生了什么?
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

您有三種選擇:


使用StringBuilder:


StringBuilder zText = new StringBuilder ();

void fillString(StringBuilder zText) { zText.append ("foo"); }

創(chuàng)建一個容器類,并將容器的實例傳遞給您的方法:


public class Container { public String data; }

void fillString(Container c) { c.data += "foo"; }

創(chuàng)建一個數(shù)組:


new String[] zText = new String[1];

zText[0] = "";


void fillString(String[] zText) { zText[0] += "foo"; }

從性能的角度來看,StringBuilder通常是最佳選擇。


查看完整回答
反對 回復 2019-11-11
?
交互式愛情

TA貢獻1712條經(jīng)驗 獲得超3個贊

在Java中,沒有任何東西通過引用傳遞。一切都是通過價值傳遞的。對象引用按值傳遞。另外,字符串是不可變的。因此,當您將附加到傳遞的字符串后,便會得到一個新的字符串。您可以使用返回值,也可以傳遞StringBuffer。


查看完整回答
反對 回復 2019-11-11
?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

發(fā)生的事情是按值傳遞了引用,即,傳遞了引用的副本。java中的任何內(nèi)容都不會通過引用傳遞,并且由于字符串是不可變的,因此該分配創(chuàng)建了一個新的字符串對象,引用的副本現(xiàn)在指向該對象。原始引用仍指向空字符串。


對于任何對象,這都是相同的,即在方法中將其設(shè)置為新值。下面的示例使事情變得更加顯而易見,但是連接字符串實際上是同一回事。


void foo( object o )

{

    o = new Object( );  // original reference still points to old value on the heap

}


查看完整回答
反對 回復 2019-11-11
  • 3 回答
  • 0 關(guān)注
  • 495 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號