為什麼b的值不是AB,operate()裡面不是把X的值給Y了嗎?

時間 2025-04-05 21:10:16

1樓:隨性的小飛

<>請點選輸入**描述往方法中傳參,傳的。

2樓:網友

是這樣的,假設。

new stringbuffer (「a」);為記憶體1

new stringbuffer (「b」);為記憶體2

a - 記憶體1

b- 記憶體2

方法的引數是引用的複製。雖然指向的是同一記憶體區域,但卻是不同的控制代碼。

operate (stringbuffer x, stringbuffer y)

x - 記憶體1

y- 記憶體2

當 y = x時,你是改變了 y 的引用指向,而不是 b 的,這裡你操作這塊記憶體是沒有問題的,但你這樣改變了引用的指向,也就是。

x - 記憶體1

y- 記憶體1

這樣對b指向的記憶體沒有影響。

稍改了一下你**,你看一下,這時y已指向記憶體1了。

public class foo {

public static void main(string args) {

stringbuffer a = new stringbuffer("a");

stringbuffer b = new stringbuffer("b");

operate(a, b);

b);static void operate(stringbuffer x, stringbuffer y) {

y = x;

c");abc,b

j**a 輸出結果為ab,a.解釋一下為什麼b。輸出 是b.而不是ab. 還有如果在operate中將y的值輸出為什麼是ab。

3樓:

因為x,y是複雜資料型別,這種東西在傳參的時候傳的是引用!

這個有點類似c語言中傳參傳指標的情況。

就是說你;這個操作對x來說會改變外層的a的內容,因為函式內的x指向的外層的a。

但是y=x這句就不一樣了。

這句是說y從指向a那個引用變成了指向x的引用,而實際a所指向的內容沒有變化。

這裡你可以把x和y理解成指標。就是;是去操作x指向的內容,而y=x;只是對y進行賦值。而賦值對於外部變數是沒有影響的。

一段j**a程式,為什麼輸出ab,b而不是ab,ab?

4樓:網友

因為函式operate的引數是傳值而不是傳址,當函式中執行到y=x這一句(實際是b=a)時,實際上是不起任何作用的,因為是值傳遞嘛,是改不了引數的值的。

5樓:網友

因為x,y都是引用型別,y=x做的事情只是讓y和x一樣指向原來"a」的位置,而不是改變了"b"的內容。

6樓:凡事有看法

y是形參,值不能帶出方法外,將y=x;修改為b=x;就ok了。

j**a為什麼b輸出是b而不是ab

7樓:暗夜冰眼

首先,輸出語句列印的a和b都是成員變數,在執行靜態方法operate()後,改變的是方法類的區域性變數x和y。執行輸出語句時輸出的a是執行了aperate方法後的a,而輸出的b是原來成員變數的b。這題的迷惑性在於,輸出語句是寫在main()方法裡的,而不是寫在operate()裡面。

樓主認為列印的b應該為ab是因為變數的型別沒有搞清楚。圖1 為原結果,圖2 為修改**後的結果。

順便說一句,如果在多執行緒的時候使用,請換stringbuffer。單執行緒隨意。

8樓:旅初彤

應該是stringbuilder屬於指標引用,無法引用到值。

j**a:怎麼解釋這個輸出結果?

9樓:網友

簡單說,y是引用,當它重新指向新值時,不影響b

幫我看一下這道j**a題目!

10樓:網友

又是指標的問題。

回去認真看關於指標的內容。

這個j**a程式的執行結果為什麼是ab,b?? 我是個學渣說的詳細點,拜託

11樓:網友

進入operate方法前。

a="a",b="b"

由於方法中操作的是物件,傳入的引數是物件的引用,實際操作的內容是物件本身。

因此執行方法後。

a="ab",b="b"

為什麼y的取值由x確定,而不是x的取值由y確定?

12樓:數學難題請找我

因為函式的定義中,字母x表示自變數,字母y表示因變數,就是說當x發生變化時,y也會跟著發生變化。x變化在前,y跟著x變化。那麼y的取值就是由x確定的,y的值由對應法則f進行計算得到。

自變數是不可能由因變數來確定的,不要把因果關係搞反了哈。

13樓:數學答題小能手

這個是相互的,如果令y=ax+b+c,(a≠0),y會隨著x的取值變化。

如果轉化為x=a'y+b'+c'的形式,那麼x也是隨著y的變化而變化的。

乙個式子裡面,兩個未知數是相輔相成的。

比如y=3x,x=1,y=3,換句話說,不就是y=6時,x=2嗎?

所以,不一定非得y跟隨x變化,只是,我們為了方便,常寫成關於未知數x的方程式。

14樓:網友

因為x是自變數,y是函式。

15樓:網友

x是自變數,y是應變數。

j**a語法的提問

16樓:網友

z就是stringbuffer z= (y); 這句話,所以z就是 (y),也就是ab。

下面的y=z並不代表說直接就把z賦值給b,雖然 (y)這句把a的長度改變了,也就是說這時main方法裡的a的值被改變了,但是b是不變的。

也就是說最後a=ab,b=b,z=ab。樓主可以把上面的 (y)改成 (x)看一下,這樣最後就會變成a=a,b=ba,z=ba。

其實y=z這句話在這裡只是改變實參y的值,並沒有改變形參b的值,你可以把y列印出來看一下,y的值也是ab。但是這個改變過的y是無法改變形參b的。

像這樣單純改變實參的值是不會對形參的值有影響的。

ds18b20裡的溫度值正負判斷為什麼要判斷大於

科強小米 tem data l read byte 讀低8位資料,低8位資料格式 2 3,2 2,2 1,2 0,2 tem data h read byte 讀高8位資料,高8位資料格式 s,s,s,s,s,2 6,2 5 temp data tem data h 256 tem data l s...

已知a的絕對值5,b的絕對值3,且a大於b,求a b的值

a b所以a 5 b 3 a b 5 3 8 a b 5 3 2 a的絕對值 5 a 5或 5 b的絕對值 3 b 3或 3 a大於b a 5,b 3或 3 a b 5 3 8或者 5 3 2 莫念 蘐 因為 b 3 所以 b 3 或b 3又因為 5 5 所以 a 5 或a 5因為 a b 故 a ...

為什麼答案選C A和B選項不是計入資產處置損益嗎?也算收入嗎?

a b也不算收入。會計收入的定義 是指企業在日常活動中形成的 會導致所有者權益增加的 與所有者投入資本無關的經濟利益的總流入。根據收入的定義,收入具有以下幾個方面的特徵 收入應當是企業在日常活動中形成的 營業外收入不確認為收入 收入是與所有者投入資本無關的經濟利益的總流入。收入會導致所有者權益的增加...