java中值傳遞和引用傳遞的知識點
阿新 • • 發佈:2018-12-14
java中值傳遞和引用傳遞的知識點
直接看下面的截圖和程式碼吧
package com.xuebao; public class ValueAndRef { /** * * @Description: (測試值傳遞和引用傳遞) * @param pa 基本型別 值傳遞 * @param pstu 自定義類 引用傳遞 * @param parr 陣列 引用傳遞 * 2017年2月20日下午5:46:32 * jerry * @return void 返回型別 */ public void change(int pa, Student pstu, int[] parr) { pa = pa + 10; pstu.age = pstu.age + 15; parr[0] = parr[0] + 5; System.out.println("方法體中改變後a = " + pa); System.out.println("方法體中改變後student.age = " + pstu.age); System.out.println("方法體中改變後arrs[0] = " + parr[0]); } }
package com.xuebao; public class TestValueAndRef { public static void main(String[] args) { int a = 10; Student student = new Student(); student.age = 10; int[] arrs = new int[]{9, 55, 89, 92}; System.out.println("初始值a = " + a); System.out.println("初始值student.age = " + student.age); System.out.println("初始值arrs[0] = " + arrs[0]); ValueAndRef valueAndRef = new ValueAndRef(); valueAndRef.change(a, student, arrs); System.out.println("呼叫方法後a = " + a); System.out.println("呼叫方法後student.age = " + student.age); System.out.println("呼叫方法後arrs[0] = " + arrs[0]); /** * java中值傳遞和引用傳遞的知識總結 * 1.定義:方法在呼叫完畢之後是否改變引數的原始數值 * 2.值型別按值傳遞,方法呼叫完數值不變 * 3.引用型別按引用傳遞,方法呼叫完數值改變 * 4.不管是值型別還是引用型別,都是把棧中空間備份一份,只不過值型別備份具體數值,引用型別備份記憶體地址,所 * 以說java都是按值傳遞也對,這是從備份的角度來說的 * 5.java資料型別分類原則,根據是否封裝指標(即分配空間形式) * 6.基本型別,值型別,只在棧中分配一塊記憶體,8個基本資料型別(byte,short,int,long,float,double,char,boolean) * 7.引用型別 在棧和堆中各分配一塊記憶體,類,陣列,抽象類,介面等都是引用型別 */ } }