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


  当两个基本数据类型数据(以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不久 记录一点拙见 用以记录.欢迎大家指正.

优质内容筛选与推荐>>
1、品管七大手法
2、LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)
3、bzoj 3816&&uoj #41. [清华集训2014]矩阵变换
4、[Codeforces 460C] Present
5、选股技巧|如何选股|怎么选股


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn