在Java中,ref和out是兩種參數(shù)傳遞的方式,我們來詳細(xì)了解一下。
ref是引用類型參數(shù)傳遞,在傳遞參數(shù)時(shí),實(shí)際上傳遞的是引用的地址。這樣, 在方法中對參數(shù)進(jìn)行修改時(shí),原始引用指向的對象也會(huì)相應(yīng)地被修改。例如:
public static void refExample(List list){ list.add("Hello World"); } public static void main(String[] args){ Lists = new ArrayList<>(); refExample(s);//在該方法執(zhí)行完畢之后,s的內(nèi)容將變?yōu)?Hello World" }
可以看到,我們在一個(gè)方法中對傳遞進(jìn)來的List對象進(jìn)行修改,這時(shí)如果List對象是在方法外面定義的,那么方法執(zhí)行后List的內(nèi)容也會(huì)變化。
out則是值類型參數(shù)傳遞,在傳遞參數(shù)時(shí),實(shí)際上傳遞的是值的拷貝。這樣,在方法中對參數(shù)進(jìn)行修改時(shí),原始值不會(huì)受到影響。例如:
public static void outExample(int i){ i = i + 1; } public static void main(String[] args){ int x = 1; outExample(x);//方法執(zhí)行完畢后x的值仍為1 }
可以看到,我們在一個(gè)方法中對傳遞進(jìn)來的int型參數(shù)進(jìn)行修改,這時(shí)如果int型參數(shù)是在方法外面定義的,那么方法執(zhí)行后int型參數(shù)的值不會(huì)變化。
因此,需要根據(jù)需要選擇使用ref或out來傳遞參數(shù)。