值參數
x就是傳值參數,我們在方法裏操作的是y的副本,不管怎麼操作,y是不變的。
引用類型
下面的例子表示:在調用函數內部創建的stu所修改的屬性值不會影響在調用函數外對象的屬性值。
但,當我們函數外和函數內的stu.name都是Tim的時候,如何分辨是不是同一個對象呢
可以使用所有Object都有的GetHashCode方法來判斷
引用參數
引用參數和傳值參數不同。引用參數並不會創建副本,引用參數的存儲地址就是方法調用時實際參數的內存地址。
ref修飾符顯式指出我要用你了,有意的用你
值類型的引用參數
下面的例子:
引用類型的引用參數
類型引用參數和值參數的區別
對於類型引用參數來說,如果沒有在方法體裏new一個對象,則只會改變原有對象的屬性,hashcode不會發生改變
沒有ref的情況
有ref和沒有ref雖然執行的結果相同,但要注意。
有ref的時候,outterStu和stu指向的是同一個堆內存
沒有ref的時候,outterStu和stu指向的不是同一個堆內存,但不同堆內存裏的地址值是一樣的。
輸出參數
一次生產,一次輸出,return
一次生產,多個輸出,輸出參數
out關鍵字
值類型:
下面就是利用out關鍵字自己實現了tryParse的方法
result 負責接收實現的結果,還會返回true來表明實現過程中是否有異常發生
引用類型的輸出參數
數組參數
以前我們計算一組數組之和的程序如下
有了params參數後
就可以直接在方法裏寫對應的數字了,簡單高效
知識擴展,split.
具名參數
可選參數
有的參數可寫可不寫
當聲明的時候具有默認值的時候,參數可以不寫
擴展方法(this 參數)
實現double類的round方法