第一个java——swap,交换方法

其实这学期的java课开了将近四星期了,加上开学前的小小预习。编写不下于二十几个java了。

可这一有关swap()方法的java确实是首次迷惑不解到处寻求解决的程序。

课堂上老师有关类、方法、对象的讲解还没消化的时候编写swap()就把我绕得更晕了。

原题如下:

已知如下一个类:

class A

{

  int a1,a2;

  A(int i, int j)

  { a1= i; a2 = j;}

}

要求编一个方法swap()用来交换A类的两个对象的成员变量的值。

一番折腾之后的代码:

class A {

    int a1,a2;
    
    
    A(int i,int j)
    {a1=i;a2=j;}
    
    public void swap()                                /*swap函数无形参 */
    {
        int m;
        m=a1;a1=a2;a2=m;
    }
    
    public static void main(String args[])
    {
        A pt=new A(2,4);
        System.out.println("a1= "+pt.a1+",a2= "+pt.a2);
        pt.swap();
        System.out.println("a1= "+pt.a1+",a2= "+pt.a2);
    }
}

结果正确。

之前失败代码遗失,不能对比。

但我清楚记得之前是纠结在swap()的形参上面,一面知道按值传递无法交换(根据C带出来的想法,但对与解释概念不清),一面用复杂类型(类、数组、接口)中的类,又总是指代不清,频频受阻。还有,就是成员变量a1,a2的作用域、构造方法对对象的初始化作用。

总结程序失败原因:首先概念理解不清晰,理不清相互关系;再者开始时对待问题的思路乱,知道一点就往上凑,从简单的角度切入问题有助解决问题。