博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中swap解惑
阅读量:6281 次
发布时间:2019-06-22

本文共 1630 字,大约阅读时间需要 5 分钟。

        直接上代码……

public class Swap {    public static void main(String[] args) {        int a[] = new int[]{1,2};        System.out.println(a[0] + " "+a[1]);        swap(a,0,1);        System.out.println(a[0] + " "+a[1]);    }private static void swap(int[] a, int i, int j) {                int temp = a[i];        a[i] = a[j];        a[j] = temp;    }}

        方法调用(call by) 是一个标准的计算机科学术语,方法调用根据参数传递的情况又分为值调用( call by reference ) 和引用调用( call by value ) 。江湖上有很多关于这两种调用的定义 ,最通常的说法是传递值的是值调用,传递地址的是引用调用。这其实很不恰当,这种 这些说法很容易让我们联想到Java的对象参数传递是引用调用,实际上,Java的对象参数传递仍然是值调用 。 在main里输出还是原来的2、3,不管传递的是引用类型还是对象实例。

public class Swap1{    public static void main(String[] args)    {        Integer a=new Integer(2);        Integer b=new Integer(3);        TestSwap ts=new TestSwap(a,b);        System.out.println("before swap:");        ts.outPut();        ts.dataSwap1(a,b);        System.out.println("after swap:");        ts.outPut();    }}class TestSwap{    Integer a=null;    Integer b=null;        public TestSwap(Integer a,Integer b)    {        this.a=a;        this.b=b;    }    /*这样不可交换,交换的只是拷贝过来的引用,而     * 输出还是成员变量(输出用的是类内的方法)     * 重要的是,形参和实参所占的内存地址并不一样,     * 形参中的内容只是实参中存储的对象引用的一份拷贝。     * */    protected void dataSwap0(Integer a,Integer b)    {        Integer temp=a;        a=b;        b=temp;    }    protected void dataSwap(Integer a,Integer b)    {        this.a = b;        this.b = a;    }    //这样也可以,不过需要类内的输出,就是说输出TestSwap的成员变量    protected void dataSwap1(Integer a,Integer b)    {        Integer temp=this.a;        this.a=this.b;        this.b=temp;    }    protected void outPut()    {        System.out.println("a="+a+" b="+b);    } }

转载地址:http://zuxva.baihongyu.com/

你可能感兴趣的文章
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>