java 值傳遞 或 引用傳遞?

先看下網上關於值傳遞和引用傳遞的概念java

值傳遞:方法調用時,實際參數把它的值傳遞給對應的形式參數,函數接收的是原始值的一個copy,此時內存中存在兩個相等的基本類型,即實際參數和形式參數,後面方法中的操做都是對形參這個值的修改,不影響實際參數的值函數

引用傳遞:也稱爲傳地址。方法調用時,實際參數的引用(地址,而不是參數的值)被傳遞給方法中相對應的形式參數,函數接收的是原始值的內存地址,在方法執行中,形參和實參內容相同,指向同一塊內存地址,方法執行中對引用的操做將會影響到實際對象spa

先無論值傳遞仍是引用傳遞,直接來看例子code

eg(1)對象

public  class Test1 { public  static  void main(String[] args) {  Person a = new Person(23, "a" );  Person b = new Person(22, "b" );  System.out.println( "改變前a:" + a + "\nb:" + b);  changeValue(a, b);  System.out.println( "改變後a:" + a + "\nb:" + b);  }

    private  static  void changeValue(Person a, Person b) {  a.setAge( 10 );  b.setAge( 11 );  }  }

輸出blog

改變前a:Person [age=23]  b:Person [age=22]  改變後a:Person [age=10]  b:Person [age=11]

  理解內存圖內存

 

 

 

 

 

 

eg(2)it

public  class Test1 { public  static  void main(String[] args) {  Person a = new Person(23, "a" );  Person b = new Person(22, "b" );  System.out.println( "改變前a:" + a + "\nb:" + b);  changeValue(a, b);  System.out.println( "改變後a:" + a + "\nb:" + b);  }

    private  static  void changeValue(Person a, Person b) {  Person temp = a;  a = b;  b = temp;  }  }

輸出class

改變前a:Person [age=23 ]  b:Person [age =22 ]  改變後a:Person [age =23 ]  b:Person [age =22]

 理解內存圖引用

 

相關文章
相關標籤/搜索