欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java的call by value和call by reference

 更新時間:2019年03月17日 10:59:14   投稿:laozhang  
在本篇文章里小編給大家總結(jié)了關(guān)于Java的call by value和call by reference的相關(guān)用法和知識點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。

題目如下:

Java傳參的兩種方式

  • call by value(值傳遞):傳遞的是值(針對基本數(shù)據(jù)類型),如傳遞一個整型數(shù)值。實(shí)際上,按值傳遞在方法調(diào)用方法中,參數(shù)只是實(shí)際參數(shù)的一份拷貝。
  • call by reference(引用傳遞):傳遞的是對象的引用(針對對象),即傳遞的是對象的地址。實(shí)際上,引用按傳遞時候會產(chǎn)生一份新的引用拷貝,新舊兩份引用同時指向同一個地址。

代碼示例

public class TestJavaCallBy {

 

 // 測試值傳遞

 public static void testCallByValue(int value) {

  value *= 10;

 }

 

 // 測試引用傳遞

 public static void testCallByReference(StringBuilder sb) {

  sb.append(" - " + ZonedDateTime.now());

 }

 

 public static void main(String[] args) {

 

  // 測試值變量

  int param = 1;

  // 測試引用對象

  StringBuilder sb = new StringBuilder("666");

 

  // 測試

  System.out.println(param);

  testCallByValue(param);

  System.out.println(param);

 

  System.out.println(sb.toString());

  testCallByReference(sb);

  System.out.println(sb.toString());

 }

}

 

控制臺輸出結(jié)果

1

// 結(jié)果仍為1,因為參數(shù)傳遞的是實(shí)參的一份拷貝,對實(shí)參不造成影響

1 

 

666

// 傳遞的是引用的拷貝,新舊兩個引用指向同一個對象(地址),因此append操作是作用在該對象上

666 - 2019-03-16T01:25:57.933038500+08:00[Asia/Shanghai]

那么就能得出一下結(jié)論:

  • call by value不會改變實(shí)參的值
  • call by reference不能改變實(shí)參的參考地址
  • call by reference能改變實(shí)參的內(nèi)容

那么這道題的答案就是這樣。

相關(guān)文章

最新評論