如何通过方法(函数)来实现两个基本数据类型的数值交换

  当两个基本数据类型数据(以int类型为例),要写作一个方法中用来调用。例如:要写一个swap方法来交换两个整型变量的值。

  如果这样写:

  

 1     public static void main(String[] args) {
 2         int a=2,b=3;
 3         System.out.println("交换前:");
 4         System.out.println("a="+a+",b="+b);
 5         swap(a,b);
 6         System.out.println("交换后:");
 7         System.out.println("a="+a+",b="+b);
 8     }
 9     public static void swap(int a,int b){
10         int temp;
11         temp=a;
12         a=b;
13         b=temp;
14     }    

那运行结果是没有变化的:

交换前:
a=2,b=3
交换后:
a=2,b=3

  因为基本数据类型做方法的形参在方法调用结束以后是不会影响主函数的结果的。基本数据类型做形参加载到内存都是在栈中进行的,当方法压栈(进栈)后,实参会传值给形参,然后进行交换 交换完成后  方法弹栈 实际上  实参是从未改变的  改变 的只是形参的值。

   那怎么来写基本数据类型交换的方法呢?

   一般要借助数组 或者  通过创建对象  即转成引用数据类型

  例如:若通过数组来写:

  

public static void swap(int[] arr,int a,int b){
        int temp;
        temp=arr[a];
        arr[a]=arr[b];
        arr[b]=temp;
    }

即先把要交换的数字放在数组中  ,比如在一些数组排序中可能用到

另一种就是通过创建对象    例如:

class Test{
        public static void main(String[] args) {
        A a= new A();
        A b= new A();
        a.n=2;
        b.n=3;
        System.out.println("交换前:");
        System.out.println("a="+a.n+",b="+b.n);
        swap(a,b);
        System.out.println("交换后:");
        System.out.println("a="+a.n+",b="+b.n);
    }
    public static void swap(Object obj1,Object obj2){
        int temp;
        A a=(A)obj1;
        A b=(A)obj2;
        temp=a.n;
        a.n=b.n;
        b.n=temp;
    }
}
class A{
    int n;
}

这样就把两个整数的值 引入到了 对象中  可以实现 两个整数的交换。当然 ,若要其他基本数据类型 只需要更改一下A中的类型即可。

 

刚学java不久  记录一点拙见  用以记录.欢迎大家指正.

posted @ 2015-07-03 16:30  凤栖梧桐镇  阅读(915)  评论(0编辑  收藏  举报