在一些面試企業的過程中 ,不少人看重於基礎的考覈。其中,傳值與傳地址 就是一種基礎能力考覈的關鍵,這裏我總結了 5種很典型的例子 ,最後作了一個總結面試
public static void method1(int i) { i= i+10; System.out.println("在方法內的值"+i); } public static void main(String[] args) { int i =5; method1(i); System.out.println("調用以後的值"+i); }
調用結果以下
在方法內的值15
調用以後的值5數組
Integer Long Boolean Byte Character Double Float Short
這幾種數據類型 也是傳地址 可是它比較特殊 能夠理解爲「傳值」函數
public static void method2(Float i) { i= i+10; System.out.println("在方法內的值"+i); } public static void main(String[] args) { Float i =1.11f; method2(i); System.out.println("調用以後的值"+i); }
調用結果以下
在方法內的值11.11
調用以後的值1.11this
public static void method3(String i) { i= i+"world"; System.out.println("在方法內的值 "+i); } public static void main(String[] args) { String a ="你好"; method3(a); System.out.println("調用以後的值 "+a); }
調用結果以下
在方法內的值 你好world
調用以後的值 你好spa
public static void method4(String[] i) { i[0]="三"; } public static void main(String[] args) { String [] a = new String[2]; a[0]="一"; a[1]="二"; for(int j = 0; j < a.length; j++){ System.out.print(a[j] + " "); } method4(a); System.out.println( " "); for(int j = 0; j < a.length; j++){ System.out.print(a[j] + " "); } }
調用結果以下
一 二
三 二code
最後一個 也是咱們應用最多的一個 就是 對象 傳址對象
public class Demo { public int ii =0; public Demo(int ii) { this.ii =ii; } } public static void method5(Demo i) { i.ii+=10; } public static void main(String[] args) { Demo deo = new Demo(6); method5(deo); System.out.println("調用以後的值 "+deo.ii); }
調用結果以下
調用以後的值 16內存
傳值 傳的是基本類型 經過參數傳遞給方法, 傳的是值的拷貝
因此 函數體內的值的變化,不會影響函數體外的值字符串
若是傳入的是解百納類型包裝類的引用,傳的仍然是值的拷貝
傳地址 傳入的是對象的引用,經過參數傳給方法,傳的是地址的拷貝
若是在函數體內,改變傳入地址所指向的對象數據,會影響函數體外的對象。這個事情能夠這麼去理解 ,我把地址的內存 傳給了方法 方法改變了內存中的內容,因此指向它的引用的值 天然都會改變。string