A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Liveei 中级黑马   /  2015-8-25 23:30  /  130 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Liveei 于 2015-8-25 23:33 编辑

名词解释:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。(这相当于原有内存空间不会受影响)
引用传递:也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,所以方法执行中形式参数的改变将会影响实际参数。(这相当于原有内存空间中的值被改变了)
引用传递示例:

package horace.com;
class A{
int temp = 10;
}

public class Demo01 {
public static void main(String[] args) {
  A a = new A();
  a.temp = 20;
  System.out.println(a.temp);
  tell(a);
  System.out.println(a.temp);

}
public static void tell(A a2){
  a2.temp = 30;
}
}
显示的结果为
1
2
20
30
值传递示例:
package horace.com;
class B{
public void tell(int temp){
  temp = 30;
  System.out.println("tell()方法中,temp的值"+temp);
}
}
public class Demo02 {
public static void main(String[] args) {
  int temp =20;
  B b =new B();
  b.tell(temp);
  System.out.println("原有temp的值,或者说main方法中temp的值:"+temp);
}
}
显示的结果为:
1
2
tell()方法中,temp的值30
原有temp的值,或者说main方法中temp的值:20
从上面可以看出来,引用传递,是将内存空间的地址传递给其他对象,这样无论谁更改都会改变该内存空间的存放的数据;值传递是将内存空间存放的数值传递给其他对象,对原来内存空间存放的数据不会造成影响。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马