導航:首頁 > 編程語言 > java形參可以改變實參嗎

java形參可以改變實參嗎

發布時間:2023-02-16 12:01:51

1. java 中實參和形參的區別

形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參有在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上

2. Java 值傳遞可以在方法內修改實參的值嗎

不可以, 既然是值傳遞,那麼在調用的時候,就已經完成了從實參到形參的復制,他們是兩個完全不同的對象,只是值相同而已,我們沒法通過形參去達到修改實參的目的,如果你喜歡,那麼可以採用引用形式的形參。這個問題之前我也問過遠標java導師,記得是這樣回復我的。希望能幫助到你!

3. Java中的形參和實參的區別以及傳值調用和傳

1.形參:用來接收調用該方法時傳遞的參數。只有在被調用的時候才分配內存空間,一旦調用結束,就釋放內存空間。因此僅僅在方法內有效。

2.實參:傳遞給被調用方法的值,預先創建並賦予確定值。

3.傳值調用:傳值調用中傳遞的參數為基本數據類型,參數視為形參。

4.傳引用調用:傳引用調用中,如果傳遞的參數是引用數據類型,參數視為實參。在調用的過程中,將實參的地址傳遞給了形參,形參上的改變都發生在實參上。

案例分析:

1.基礎數據類型(傳值調用)

傳值,方法不會改變實參的值。

2.引用數據類型(引用調用)

傳引用,方法體內改變形參引用,不會改變實參的引用,但有可能改變實參對象的屬性值。

舉兩個例子:

(1)方法體內改變形參引用,但不會改變實參引用 ,實參值不變。

4. java中如何使形參改變實參

1.形參變數只有在被調用時才分配內存單元,在調用結束時, 即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。 函數調用結束返回主調函數後則不能再使用該形參變數。

2.實參可以是常量、變數、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

3.實參和形參在數量上,類型上,順序上應嚴格一致, 否則會發生「類型不匹配」的錯誤。

5. Java方法的形參是局部變數,不改變實際參數的值。

形參參考變數的分類可分為以下兩大類(討論范圍:形參)
Primitive Formal Parameter(初始數據型,內建型-簡單理解就是有前綴byte\short\int\long\float\double\char\boolean完全枚舉的標識符,即我們通常所說的基本類型,不屬於「類」,指向棧內存地址)

Reference Formal Parameter(引用型-簡單理解就是無上述前綴的標識符,注意String類型非Primitive Data Type,屬於「類」,指向堆內存地址)

PS:該死的是,String類型實例化創建對象並將對象引用賦值給一個變數時,竟然可以不用關鍵字new(跟Primitive 數據類型的賦予字面值方式在直觀形式上幾乎一致),故容易產生相關誤區。

6. 形參不能改變實參,為什麼在用指針傳遞數值的時候又可以改變呢

形參其實是在把實參傳遞給子函數的時候定義了一個新的變數,但是這個變數的值和實參相等
所以在子函數里
無論怎麼修改都不會影響到調用它的函數的實參的值
在用指針做參數的時候
因為傳遞的不是值本身,而是它所對應的地址,我們改變值的時候是改變那個地址里的值
所以
傳遞指針的話
就能改變值了
如果你希望在子函數里可以修改調用它的函數的值的話你可以使用引用函數
就比如
#include<stdio.h>
void
fun(int
&x)
x
=
x
+
1;
void
main()
{
int
a
=
5;
fun(a);
printf("%d",a);
}
就是在參數前加了一個&就行了

7. 形式參數什麼時候可以改變實參給個例子。

形參無法直接改變實參,只有通過指針來獲得實參的存儲地址。
然後通過地址來間接地對地址中實參的值進行操作。例如:

#include<stdio.h>
fun(int *c)
{
*c=*c+1;
}
main()
{
int a=1;
fun(&a);
printf("%d",a);
}

本例中主函數 main() 將 a 的地址賦給了自定義函數 fun()

然後自定義函數 fun() 通過對取 a 的地址中的值並加 1

最後又存儲到 a 的地址中,實現了對實參 a 的改變!

閱讀全文

與java形參可以改變實參嗎相關的資料

熱點內容
word2007層次結構 瀏覽:456
去掉文件名的數字 瀏覽:713
word公司 瀏覽:710
淘寶店數據包怎麼上傳 瀏覽:341
pbt文件 瀏覽:204
HX基礎編程怎麼改變字體 瀏覽:876
怎麼開網路教學 瀏覽:915
630升級工程武器 瀏覽:936
用換機助手接收的軟體文件在哪找 瀏覽:282
閱達app一教一輔五年級有哪些 瀏覽:7
win10系統用f2調節音量 瀏覽:19
壓縮文件密碼器 瀏覽:840
線下活動數據分析有哪些 瀏覽:314
助聽器插片式編程線如何連接 瀏覽:293
怎麼刪除系統休眠文件 瀏覽:914
搜索文件內容中包含的文字並替換 瀏覽:542
微信相冊程序圖標 瀏覽:714
win8怎麼顯示文件格式 瀏覽:547
文件伺服器中毒 瀏覽:721
如何修改網站訪問次數 瀏覽:518

友情鏈接