引用传递

来源:互联网 发布:2k16本西蒙斯捏脸数据 编辑:程序博客网 时间:2024/05/21 11:17

---------siwuxie095

  

  

  

  

  

引用传递:

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

  

  

  

代码1

  

package com.siwuxie095.ref;

  

class Ref1{

int temp=10;

}

  

public class RefDemo01 {

  

public staticvoid main(String[] args) {

Ref1 r1=new Ref1();

r1.temp=20;

System.out.println(r1.temp);

tell(r1);

System.out.println(r1.temp);

}

 

//引用传递

public staticvoid tell(Ref1 r2) {

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

r2.temp=30;

}

  

}

 

  

运行一览:

  

  

  

内存分析:

  

  

  

  

  

代码2

  

package com.siwuxie095.ref;

  

public class RefDemo02 {

  

public staticvoid main(String[] args) {

String str1="hello";

System.out.println(str1);

tell(str1);

System.out.println(str1);

}

 

public staticvoid tell(String str2) {

str2="jike";

}

  

}

  

  

运行一览:

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

  

  

  

内存分析:

 

  

  

  

代码3:

  

package com.siwuxie095.ref;

  

  

class Ref3{

String temp="hello";

 

}

  

public class RefDemo03 {

  

public staticvoid main(String[] args) {

Ref3 r1=new Ref3();

r1.temp="jike";

System.out.println(r1.temp);

tell(r1);

System.out.println(r1.temp);

}

  

public staticvoid tell(Ref3 r2) {

r2.temp="xueyuan";

}

}

  

  

运行一览:

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

  

  

  

内存分析:

  

  

  

  

  

【made by siwuxie095】

0 0