• java参数传递总结


    以前学习C的 时候参数传递的方式有两种,一种叫"值传递",值传递传的是一个实体,通俗地说就是传值;另一种叫"引用传递",引用传递传的是指针。

    在这里重点讨论以引用的方式传递参数的方式。

    在java中只要不是new出来的对象那么就是

    Java代码
    1. MyClass mc = new MyClass(); //在内存中生成MyClass对象  
    2. MyClass mc2 = mc; //将mc2指向mc在内存中的对象  
    MyClass mc = new MyClass(); //在内存中生成MyClass对象 MyClass mc2 = mc; //将mc2指向mc在内存中的对象

    上面的mc和cm2是同一个对象。

    Java代码
    1. Operator opt = new Operator();  
    2. MyClass mc = new MyClass();  
    3. MyClass mc2 = mc;  
    4. mc.add();  
    5. System.out.println(mc.i);  
    6. System.out.println(mc2.i);  
    7. opt.sub(mc2);  
    8. System.out.println(mc.i);  
    9. System.out.println(mc2.i);  
    Operator opt = new Operator(); MyClass mc = new MyClass(); MyClass mc2 = mc; mc.add(); System.out.println(mc.i); System.out.println(mc2.i); opt.sub(mc2); System.out.println(mc.i); System.out.println(mc2.i);

    结果:

    Java代码
    1. run:  
    2. 1  
    3. 1  
    4. 0  
    5. 0  
    6. 成功生成(总时间:0 秒)  
    run: 1 1 0 0 成功生成(总时间:0 秒) Java代码 <embed height="15" width="14" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" flashvars="clipboard=%20%20%20%20%20%20%20%20Operator%20opt%20%3D%20new%20Operator()%3B%0A%20%20%20%20%20%20%20%20MyClass%20mc%20%3D%20opt.getMyClass()%3B%0A%20%20%20%20%20%20%20%20mc.add()%3B%0A%20%20%20%20%20%20%20%20System.out.println(%22add%3A%22%20%2B%20mc.i)%3B%0A%20%20%20%20%20%20%20%20add(mc)%3B%0A%20%20%20%20%20%20%20%20opt.sub1(mc)%3B%0A%20%20%20%20%20%20%20%20System.out.println(%22sub1%3A%22%20%2B%20mc.i)%3B%0A%20%20%20%20%20%20%20%20opt.sub2(mc)%3B%2F%2F%E5%9C%A8%E6%96%B9%E6%B3%95%E9%87%8C%E9%9D%A2%E5%AF%B9%E5%AF%B9%E8%B1%A1%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C%E4%B9%9F%E4%BC%9A%E5%AF%B9main%E4%B8%AD%E7%9A%84%E5%AF%B9%E8%B1%A1%E6%9C%89%E5%BD%B1%E5%93%8D%EF%BC%8Creference%E8%B0%83%E7%94%A8%E7%9A%84%E7%BB%93%E6%9E%9C%0A%20%20%20%20%20%20%20%20System.out.println(%22sub1%3A%22%20%2B%20mc.i)%3B" src="http://lauvenman.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" lk_mediaid="lk_juiceapp_mediaPopup_1232590065375" lk_media="yes">
    1. Operator opt = new Operator();  
    2. MyClass mc = opt.getMyClass();  
    3. mc.add();  
    4. System.out.println("add:" + mc.i);  
    5. add(mc);  
    6. opt.sub1(mc);  
    7. System.out.println("sub1:" + mc.i);  
    8. opt.sub2(mc);//在方法里面对对象进行操作也会对main中的对象有影响,reference调用的结果  
    9. System.out.println("sub1:" + mc.i);  
    Operator opt = new Operator(); MyClass mc = opt.getMyClass(); mc.add(); System.out.println("add:" + mc.i); add(mc); opt.sub1(mc); System.out.println("sub1:" + mc.i); opt.sub2(mc);//在方法里面对对象进行操作也会对main中的对象有影响,reference调用的结果 System.out.println("sub1:" + mc.i);

    运行结果:

    Java代码
    1. run:  
    2. add:1  
    3. sub1:2  
    4. sub1:-98  
    5. 成功生成(总时间:0 秒)  
    run: add:1 sub1:2 sub1:-98 成功生成(总时间:0 秒)
  • 相关阅读:
    MySQL数据库返回影响行数的实际操作流程
    nslookup命令
    Mysql Strict Mode
    mysql表大小写
    Objective-C消息转发
    NSDateFormatter 和 NSDateComponents 的用法
    提交app的时候总是报出icon的错误
    IOS 的loadView 及使用loadView中初始化View注意的问题。(死循环并不可怕)
    [[NSMutableArray alloc] init];和[[NSMutableArray alloc] initWithCapacity:0]区别
    NSMutableArray初始化崩溃问题
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400762.html
Copyright © 2020-2023  润新知