Fork me on GitHub

引用传递

---------siwuxie095

   

   

   

   

   

引用传递:

参考链接1参考链接2参考链接3参考链接4

   

   

   

代码1

   

package com.siwuxie095.ref;

   

class Ref1{

int temp=10;

}

   

public class RefDemo01 {

   

public static void main(String[] args) {

Ref1 r1= new Ref1();

r1.temp=20;

System.out.println(r1.temp);

tell(r1);

System.out.println(r1.temp);

}

 

//引用传递

public static void tell(Ref1 r2) {

//r2在改变temp的值为30之前,和r1都指向了 20

r2.temp=30;

}

   

}

 

   

运行一览:

   

   

   

内存分析:

   

   

   

   

   

代码2

   

package com.siwuxie095.ref;

   

public class RefDemo02 {

   

public static void main(String[] args) {

String str1="hello";

System.out.println(str1);

tell(str1);

System.out.println(str1);

}

 

public static void tell(String str2) {

str2="jike";

}

   

}

   

   

运行一览:

因为String类型的数据是不可更改的

   

   

   

内存分析:

 

   

   

   

代码3:

   

package com.siwuxie095.ref;

   

   

class Ref3{

String temp="hello";

 

}

   

public class RefDemo03 {

   

public static void main(String[] args) {

Ref3 r1=new Ref3();

r1.temp="jike";

System.out.println(r1.temp);

tell(r1);

System.out.println(r1.temp);

}

   

public static void tell(Ref3 r2) {

r2.temp="xueyuan";

}

}

   

   

运行一览:

实际上是开辟了新的内存空间(与代码2对比)

   

   

   

内存分析:

   

   

   

   

   

【made by siwuxie095】

posted on 2017-03-16 19:54  siwuxie095  阅读(96)  评论(0编辑  收藏  举报

导航