Java中存在兩種傳參方式,分別是傳引用和傳副本。下面我們來(lái)詳細(xì)了解一下這兩種傳參方式的區(qū)別以及使用場(chǎng)景。
1. 傳副本
public void test(int num) { num = num + 1; System.out.println("在函數(shù)內(nèi)部num的值為:" + num); } public static void main(String[] args) { int num = 1; System.out.println("傳參前num的值為:" + num); test(num); System.out.println("傳參后num的值為:" + num); }
上面的例子就是傳副本的方式,在函數(shù)內(nèi)部對(duì)num進(jìn)行修改并不會(huì)影響到函數(shù)外部num的值,因?yàn)楹瘮?shù)內(nèi)部操作的是副本。
2. 傳引用
public void test(StringBuilder builder) { builder.append(" World"); System.out.println("在函數(shù)內(nèi)部builder的值為:" + builder.toString()); } public static void main(String[] args) { StringBuilder builder = new StringBuilder("Hello"); System.out.println("傳參前builder的值為:" + builder.toString()); test(builder); System.out.println("傳參后builder的值為:" + builder.toString()); }
上面的例子就是傳引用的方式,在函數(shù)內(nèi)部對(duì)builder進(jìn)行修改會(huì)影響到函數(shù)外部builder的值,因?yàn)楹瘮?shù)內(nèi)部操作的是引用。
總結(jié):
傳副本適合數(shù)據(jù)量較小,數(shù)據(jù)不需要頻繁修改的情況下使用,因?yàn)閭鬟f過(guò)程比較快;傳引用適合數(shù)據(jù)量較大,數(shù)據(jù)需要頻繁修改的情況下使用,因?yàn)閭鬟f過(guò)程比較耗時(shí),而且如果使用傳副本的方式會(huì)占用大量的內(nèi)存。