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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM代景康 高级黑马   /  2013-10-21 20:19  /  705 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

 通过代码分析:  public class ParamTest {
  // 初始值为0
  protected int num = 0;
  // 为方法参数重新赋值
  public void change( int i) {
  i = 5;
  }
  // 为方法参数重新赋值
  public void change(ParamTest t) {
  ParamTest tmp = new ParamTest();
  tmp. num = 9;
  t = tmp;
  }
  // 改变方法参数的值
  public void add(int i) {
  i += 10;
  }
  // 改变方法参数属性的值
  public void add(ParamTest pt) {
  pt. num += 20;
  }
  public static void main(String[] args) {
  ParamTest t = new ParamTest();
  System. out.println( "参数--基本类型" );
  System. out.println( "原有的值:" + t.num );
  // 为基本类型参数重新赋值
  t.change(t. num);
  System. out.println( "赋值之后:" + t.num );
  // 为引用型参数重新赋值
  t.change(t);
  System. out.println( "运算之后:" + t.num );
  System. out.println();
  t = new ParamTest();
  System. out.println( "参数--引用类型" );
  System. out.println( "原有的值:" + t.num );
  // 改变基本类型参数的值
  t.add(t. num);
  System. out.println( "赋引用后:" + t.num );
  // 改变引用类型参数所指向对象的属性值
  t.add(t);
  System. out.println( "改属性后:" + t.num );
  }
  }
  输出结果如下:
  参数--基本类型
  原有的值:0
  赋值之后:0
  运算之后:0
  参数--引用类型
  原有的值:0
  赋引用后:0
  改属性后:20
  得出结论:
  1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。
  2. 对象和引用型变量被当作参数传递给方法时,在方法实体中,无法给原变量重新赋值,但是可以改变所指向对象的属性。至于到底它是值传递还是引用传递,这并不重要,重要的是我们要清楚当一个引用被作为参数传递给一个方法时,在这个方法体内会发生什么。

评分

参与人数 1技术分 +1 收起 理由
李江 + 1 赞一个!

查看全部评分

0 个回复

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