文章詳情頁
Java的pass by Value(傳值)
瀏覽:69日期:2024-06-13 17:43:27
內容: Java中使用“pass by value'函數調用 方式,這常常造成許多人迷惑。在所有地點,Java都使用嚴格采用pass by value,所以下列程序: class Param { public static void main (String [] args){ int x = 3; triple(x); System.out.println('x after triple : '+ x); } private static void triple (int arg) { arg = arg * 3; System.out.println('arg in triple :'+ arg); }}會產生這樣的輸出:arg in triple : 15x after triple : 5這段代碼不致于讓人糊涂。但如果參數中傳遞的是對象,可能把人弄迷糊了。如果在程序中以Date對象表示日期,那么下列程序:class Param { public static void main (String [] args){ Date d1 = new Date('1 Apr 98'); nextDateUpdate(d1); System.out.println('d1 after nextDay: ' + d1);Date d2 = new Date('1 Apr 98'); nextDateReplace(d2); System.out.println('d2 after nextDay: ' + d2); } private static void nextDateUpdate (Date arg) { arg.setDate( arg.getDate() + 1); System.out.println('arg in nextDay : ' + arg); } private static void nextDateReplace (Date arg) { arg = new Date(arg.getYear(),arg.getMonth(),arg.getDate()+1); System.out.println('arg in nextDay : ' + arg); }}產生的輸出:arg in nextDay : Thu Apr 02 00:00:00 CST 1998d1 after nextDay: Thu Apr 02 00:00:00 CST 1998arg in nextDay : Thu Apr 02 00:00:00 CST 1998d2 after nextDay: Wed Apr 01 00:00:00 CST 1998從本質上說,object reference 是按值傳遞的(pass by value)。因此可以修改參數對象的內部狀態,但參數對象重新賦值,沒有意義。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd Java中使用“pass by value'函數調用 方式,這常常造成許多人迷惑。在所有地點,Java都使用嚴格采用pass by value,所以下列程序: class Param {public static void main (Strin
標簽:
Java
相關文章:
排行榜