java函式引數傳遞方式

2021-06-21 23:56:44 字數 599 閱讀 4371

1、對於基礎型別,傳遞值;

函式內對引數的操作不影響到外部的引數值。

2、對於非基礎型別,傳引用。

一般情況下,函式中引數的操作會影響到外部的引數值。如函式對student物件修改name屬性後,外部的student物件的name就變了;

對於基礎型別的包裝型別,本來也適用於本規則,但實際卻另外蹊蹺:

public static void main(string args) 

public static void changeval(integer i)

列印結果為:100

上面語句執行後,外部物件的值不會變,原因在於,這個實際的實際行為為:i = integer.valueof(9); 這相當於給這個引數重新賦值了,而不是對原有物件屬性進行修改,所以外部值不會變;

那是否有辦法進行改變呢?

有的,通過反射機制修改integer物件的內部屬性。

public static void changeval(integer i)

catch (exception e)

}

這樣執行的結果就是9了。

Java引數傳遞方式

如果方法a呼叫方法b,如果方法 的引數是基本資料型別或者string型別,那麼方法 向方法b傳遞引數的值,如果方法 的引數是物件或者陣列,那麼,方法 向方法b傳遞引數的引用。例子如下 public class variabletest changeparameter param1,param2,pa...

JAVA的引數傳遞方式

1 簡單資料型別作為引數傳遞 複製傳值方式 但是string型別很特殊,跟簡單資料型別一樣 package cn.edu.lei public class test2 public static void main string args 執行結果 初始階段a的值 10 fun函式後引數a的值 20...

C 函式引數傳遞方式

引數傳遞有三種方式 值傳遞 pass by value 指標傳遞 pass by pointer 引用傳遞 pass by reference 程式測試 include stdafx.h include using namespace std 值傳遞 pass by value void fun1 ...