两个值互换有以下三种方式:

  1. 使用临时变量(此种方法便于理解)

     x = 10;
    y = 20;
    //begin
    int temp = x;
    x = y;
    y = temp;
    //end;
    //此时x = 20; y = 10;
  2. 利用加减来实现(此种方法只适应于数值比较小的情况,如果数值较大,会超界)
     x = 10;
    y = 20;
    //begin
    x = x + y ;
    y = x - y;
    x = x - y;
    //end;
    //此时x = 20; y = 10;
  3. 利用位运算实现(不用考虑数值大小问题)
     x = 10;
    y = 20;
    //begin
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    //end;
    //此时x = 20; y = 10;

但是java中没有指针的概念,如果要把两值互换封装起来的话,那么形参只能是传入对象,不能直接传入数值,因为传入数值不能改变原来的值;也没有C#中的ref关键字。

  • 直接在程序中写
  • 函数调用,这种方法可能比较麻烦,没有直接用上面的方便,但是也是一种思路;
     package com.test;
    public class test1 {
    public static void main(String[] args) {
    int x = 10;
    int y = 20;
    int[] tempArr = swap(x,y);//定义数组接收返回值
    x = tempArr[0];
    y = tempArr[1];
    System.out.println("x="+x+";y="+y);
    }
    public static int[] swap(int x, int y)//定义函数换值,返回数组
    {
    int[] arr = new int [2];
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    arr[0] = x;
    arr[1] = y;
    return arr; }
    }

最新文章

  1. Url路径重写的原理
  2. ECMAScript5中数组的方法
  3. msbuild
  4. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 175人阅读 评论(0) 收藏
  5. php session详解
  6. sql语句与 数据库
  7. 目标检测的图像特征提取之(一)HOG特征(转载)
  8. 将php配置为服务
  9. 问题:LVM lvextend增加空间后,df查看还是原来空间
  10. JavaScript元素的创建、添加、删除
  11. mysql登录报错 ERROR 1045 (28000)
  12. ios_swift开发资源整理
  13. python创建系统用户和用户组
  14. Android-Throwable: A WebView method was called on thread 'JavaBridge'.
  15. google浏览器window.onbeforeunload方法兼容问题
  16. Mac安装mysql8.0.12
  17. django模型创建
  18. 最近遇到的几个问题,关于Unity脚本在Inspector视图中前面没有勾选框的问题
  19. Codeforces Round #489 (Div. 2)
  20. 学习-短信的上行(MO)和下行(MT)详解

热门文章

  1. Fping
  2. oracle10g配置小记
  3. opencv透视变换
  4. 精妙SQL语句
  5. 通过案例对 spark streaming 透彻理解三板斧之二:spark streaming运行机制
  6. 网站接入QQ登录的两种方法
  7. Android--Toast(吐司)的基本使用
  8. NHibernate系列文章十一:NHibernate并发控制
  9. MyBatis关联查询,表字段相同,resultMap映射问题的解决办法
  10. knockoutJS+knockout.multimodels使用记录