導航:首頁 > 編程語言 > 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形參可以改變實參嗎相關的資料

熱點內容
如何檢查無線網路驅動是否正常 瀏覽:468
百度網盤來自分享的文件在哪裡 瀏覽:127
如何發視頻到騰訊視頻文件夾里 瀏覽:510
微信打開cad外部文件找不到 瀏覽:882
平板可以打開各種文件後綴的軟體 瀏覽:531
蘋果微信文件怎麼全選 瀏覽:749
手機里之前打開過的文件在哪裡找 瀏覽:685
cad能看word文件嗎 瀏覽:719
12306火車票系統後台資料庫 瀏覽:570
js翻譯德語 瀏覽:33
從哪裡可以下載a股的數據 瀏覽:437
邏輯文件名和物理文件名關系 瀏覽:66
怎麼查一個網站的外鏈 瀏覽:675
linux下db2安裝時版本選擇 瀏覽:738
匯編編程用哪個軟體 瀏覽:486
仙樂下的歌在文件管理哪裡 瀏覽:477
115網盤解析工具2014 瀏覽:371
內圓弧銑刀怎麼編程 瀏覽:410
記事本文件轉word格式對齊 瀏覽:300
excel刪除恢復文件 瀏覽:290

友情鏈接