zoukankan      html  css  js  c++  java
  • 如何通过方法(函数)来实现两个基本数据类型的数值交换

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

  • 相关阅读:
    Oracle分页问题
    win10系统vs2008环境wince项目无法创建问题
    工作满十年了
    让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
    Oracle DMP 操作笔记之根据DMP逆向推导出导出的表空间名称
    【转】如何在 Eclipse 中進行 TFS 的版本管控
    【转】什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定
    [转]有关USES_CONVERSION
    [转]使用VC/MFC创建一个线程池
    IT男的”幸福”生活
  • 原文地址:https://www.cnblogs.com/bingzhikun/p/4619002.html
Copyright © 2011-2022 走看看