今天忽然想到關於方法參數傳遞的問題,後通過簡單代碼的驗證,最終肯定是值傳遞.java
關於方法參數的傳遞形式有兩種:值傳遞,引用傳遞.code
一.值傳遞
對象
所謂值傳遞就是說實際參數會複製一份而後傳遞到方法內去使用.當方法內對這個傳遞的值進行修改時,實際參數不受影響class
二.引用傳遞
test
所謂引用傳遞就是說不會複製一份實參值,因此當方法內部對這個傳遞的值進行修改是,實際參數會受到影響.引用
三.關於java中方法參數的傳遞方式方法
在java中能夠這樣理解方法參數的傳遞,首先對於java的基本類型來講,就是複製一份而後讓方法內部操做.對形參的操做不會影響實參.這顯然是值傳遞.其次對於java中對象來講,是複製這個對象的地址,造成一個新的形參,此時對對象值的改變,確定能夠影響實參,由於他們都指向同一個地址的對象.但並非值傳遞的意義.當咱們讓形參指向一個新的地址,及改變傳遞參數的值(這裏是方法實際參數地址複製的值),原來實際參數指向的地址並無改變.因此明顯能夠認爲java中方法參數的傳遞只有值傳遞.
static
四.證實代碼co
public class MyTest { public static void main(String[] args) { Cat cat = new Cat("咪咪"); MyTest test = new MyTest(); int a = 100; test.printCatName(cat,a); System.out.println(cat); System.out.println(a); } public void printCatName(Cat cat,int a){ cat = null; System.out.println(cat); a = 10; } }
輸出結果 參數傳遞
I am a cat named 咪咪 null com.lubby.test.Cat@43cda81e 100