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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lovecx24 中级黑马   /  2013-11-29 18:00  /  1157 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

由于在Java中存在两种类型的数据:基本类型和引用类型。这两种类型的数据都可以作为参数进行传递。在方法中定义的变量称为形参,在调用该方法时输入的常数称为实参,并且实参和形参要匹配,主要由以下两点:
(1) 实参和形参的个数要相等。
(2) 实参和形参对应位置上的数据类型可以相互兼容,也就是说要么数据类型相同,要么实参可以自动进行了i类型转换变成形参类型。对于原始数据类型,也就是int,long,char之类的类型,是通过传值方式进行调用的,这种传递方式特点是:
(1) 他所传递的实参的值是一个复制品。
(2) 单值传递:实参本质上是一个可求值的表达式,他所求出来的值是一个基本数据类型。
(3) 单向传递: 方法内部可以改变形参的值,但这种修改不会影响对应的实参。
例如,调用一个带参数的方法时,我们修改了形参传来的值,等方法调用结束后,实参并没有随着形参变化而变化,也就是说,在参数传递过程中,该变量的值在方法调用期间会复制给形参。由于形参是方法的局部变量,它的生命周期仅仅在这个方法内,所以对形参做任何改变都不会影响该实参的值。
如果传递的是指向对象的引用,那么就会将该对象的地址传递给形参。这意味着,在方法调用期间,实参和形参都是该引用值所代表对象的名称。所以在参数传递之前,必须由实参表达式实例化一个对象,否则会出现错误。
代码剖析:以下是一个关于单向传值的实例,具体代码如下:
  1. public class AA{
  2. public static void main(String[] args){
  3. int num;//原始数据类型int变量
  4. double d;//原始数据类型double变量
  5. char c;//原始数据类型char变量
  6. num=10;
  7. d=25.66;
  8. c='c';
  9. //打印原始变量值
  10. System.out.println("int is "+ num);
  11. System.out.println("double is "+ d);
  12. System.out.println("char is "+ c);
  13. System.out.println();
  14. System.out.print("setValue");
  15. setValue(num,d,c);//调用方法
  16. System.out.println("returned from setValue");
  17. System.out.println("int is "+ num);
  18. System.out.println("double is "+ d);
  19. System.out.println("char is "+ c);
  20. }
  21. public static void setValue(int a,double d,char c){
  22. System.out.println("in setValue...");
  23. //修改方法内部变量值
  24. a=0;
  25. d=123.66;
  26. c='b';
  27. System.out.println("a is "+ a);
  28. System.out.println("d is "+ d);
  29. System.out.println("c is "+ c);
  30. }
  31. }
复制代码
代码运行结果如下:
  1. int is 10
  2. double is 25.666
  3. char is a
  4. setValue
  5. in setValue...
  6. a is 0
  7. d is 123.66
  8. c is b
  9. returned from setValue
  10. num is 10
  11. d is 25.666
  12. c is a
复制代码
解释说明:在上述示例代码中,定义了原始数据类型a,d和c。在setValue()方法调用过程中,变量a,d,c分别将值传递给了形参,并且setValue()方法分别对三个原始数据类型的形参传递过来的值进行了修改,从上面运行结果可以看出,只有在setValue()方法内部打印出来的数据发生了变化,在setValue()方法调用前和调用后,对三个变量没有任何影响。

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
狼王 + 1 + 6 有代码,有文字,挺好的总结。继续努力哈。.

查看全部评分

0 个回复

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