zoukankan      html  css  js  c++  java
  • 参数传递

     

    结论

     

    1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的

     

    2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

     

    1.1.1      参数传递图解与结论

    通过上面的两段程序可以得出如下结论:

    l  当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响

    l  当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响

    类:

    1 class  Car
    2 {
    3     //属性
    4     String pinpai;
    5     String type;
    6     double pailiang;
    7 }

    测试:

     1 class TestCar 
     2 {
     3     public static void main(String[] args) 
     4     {
     5         Car car=new Car();
     6         car.pinpai="牧马人";
     7         car.pailiang=800;
     8         car.type="7座";
     9         System.out.println("车的品牌为"+car.pinpai);
    10         System.out.println("车的排量为"+car.pailiang);
    11         System.out.println("车的类型为"+car.type);
    12     }
    13 }

     结果:

    基本类型的参数传递:

     1  1 public class ParamTransfer {
     2  2     public int money;
     3  3     
     4  4     public void amethod(int i) {
     5  5         System.out.println("方法得到的i的值:" + i);
     6  6         i = i * 5;
     7  7         System.out.println("方法执行语句i=i*5后i的值:" + i);
     8  8         System.out.println("money的值:" + this.money);
     9  9     }
    10 10 
    11 11     public static void main(String[] args) {
    12 12         ParamTransfer pt = new ParamTransfer();
    13 13         pt.money = 100;
    14 14         pt.amethod(pt.money);
    15 15     }
    16 16 
    17 17 }
    1 运行结果如下:
    2 方法得到的i的值:100
    3 方法执行语句i=i*5后i的值:500
    4 money的值:100

    注意对比形参i和money值的变化。这里我们把pt.money作为参数传递给amethod方法,该方法中i得到的值是100,这个我们从运行结果中可知。执行完i=i*5语句后我们发现当前对象的money属性值并没有发生改变,这就说明这里只是传了一个100数值给形参i,相当于把pt.money的值拷贝给i,i的变化并不会影响pt.money的值,仅仅是传数值。

    2.引用类型的参数传递

     1  1 class Time {
     2  2     public int hour;
     3  3     public int minute;
     4  4     public int second;
     5  5 }
     6  6 
     7  7 public class ObjectParamTransfer {
     8  8     Time time;
     9  9 
    10 10     public static void main(String[] args) {
    11 11         ObjectParamTransfer opt = new ObjectParamTransfer();
    12 12         opt.time = new Time();
    13 13         opt.time.hour = 11;
    14 14         opt.time.minute = 22;
    15 15         opt.time.second = 33;
    16 16 
    17 17         System.out.println("time的属性值:");
    18 18         System.out.println("hour=" + opt.time.hour);
    19 19         System.out.println("minute=" + opt.time.minute);
    20 20         System.out.println("second=" + opt.time.second);
    21 21 
    22 22         opt.method(opt.time);//将对象引用作为参数传递给方法method
    23 23         //对比执行方法后的变化
    24 24         System.out.println("执行方法后的time的属性值");
    25 25         System.out.println("hour=" + opt.time.hour);
    26 26         System.out.println("minute=" + opt.time.minute);
    27 27         System.out.println("second=" + opt.time.second);
    28 28 
    29 29     }
    30 30 
    31 31     private void method(Time t) {
    32 32         System.out.println("参数t的属性值:");
    33 33         System.out.println("hour=" + t.hour);
    34 34         System.out.println("minute=" + t.minute);
    35 35         System.out.println("second=" + t.second);
    36 36         System.out.println("对t和time进行==比较,结果为:" + (t == this.time));
    37 37 
    38 38         System.out.println("改变t的实例变量值");
    39 39         t.hour = 44;
    40 40         t.minute = 55;
    41 41         t.second = 60;
    42 42     }
    43 43 }
     1 运行结果如下:
     2 time的属性值:
     3 hour=11
     4 minute=22
     5 second=33
     6 参数t的属性值:
     7 hour=11
     8 minute=22
     9 second=33
    10 对t和time进行==比较,结果为:true
    11 改变t的实例变量值
    12 执行方法后的time的属性值:
    13 hour=44
    14 minute=55
    15 second=60
  • 相关阅读:
    用户访问过的产品,在cookie记录产品id,id取得产品信息
    文件上传操作
    上次文件先创建目录,再上传到目录里面去
    解决PHPcms 2008 sp4 注册选择模型关闭后,注册不能自动登录的问题
    php输出表格的方法
    php中实现退后功能,不用历史记录
    PHP的substr_replace将指定两位置之间的字符替换为*号
    php算开始时间到过期时间的相隔的天数,同理可以实现相隔年,小时,分,秒等数
    不用js用php做tab选项卡
    再也回不去的从前
  • 原文地址:https://www.cnblogs.com/2734156755z/p/9328779.html
Copyright © 2011-2022 走看看