值傳遞和引用傳遞有什么區(qū)別?
你學(xué)過(guò)C或者C++嗎?這兩個(gè)概念是從C/C++延續(xù)過(guò)來(lái)的,就類(lèi)似于C里面的值傳遞和指針傳遞。在java中除了基本類(lèi)型(Integer/Float/Double等)和String類(lèi)的對(duì)象外,所有的類(lèi)對(duì)象引用都是引用傳遞,也就是傳遞的對(duì)象地址。所謂值傳遞就是傳遞的值的拷貝,而不是原來(lái)的值,比如public static void main(String[] args) {int a = 10;int b = 20;int c = add(a, b)
;System.out.println("a = " + a + ", b = " + b + ", c = " + c);
}private static int add(int a, int b) {a = 20;b = 30;return a + b;
}輸出:a = 10, b = 20, c = 50這就是所謂值傳遞,在被調(diào)方法中改變參數(shù)值不會(huì)影響主調(diào)方法中定義的變量的值如果你將a、b定義為Student類(lèi)的對(duì)象,然后在add方法中改變參數(shù)里面的值,那么主調(diào)方法main中的a、b變量將跟著發(fā)生改變,就是所謂引用傳遞