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

  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; }
    }

java中两个值互换的更多相关文章

  1. 变量赋值理解--Pyton中让两个值互换的方法

    #Pyton中让两个值互换的方法 #方法一:可以理解为相当于是同时赋值 a = 5 b = 4 a,b = b,a print(a,b) #方法二:可以理解为拿箱子过程 c = 10 d = 20 e ...

  2. [转] 有关java中两个整数的交换问题

    转载申明:本文主要是用于自己学习使用,为了完善自己的只是框架,没有任何的商业目的. 原文来源:有关Java中两个整数的交换问题 如果侵权,麻烦告之,立刻删除. 在程序开发的过程,要交换两个变量的内容, ...

  3. Java中到底是值传递还是引用传递?

    Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...

  4. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  5. Java中两个List对比的算法

    Java中两个List对比的算法:   // 测试数据 // tdcsDdt.add("Z"); // tdcsDdt.add("B"); // tdcsDdt ...

  6. java中,null值可以被强制转换为任何类型

    java中,null值可以被强制转换为任何类型

  7. Java中真的只有值传递么?

    Java中真的只有值传递么? (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型 ...

  8. Java中两个或多个byte数组合并及int类型转数组

    Java中两个或多个byte数组合并及int类型转数组 // 用list好处是可以未知多个? public static byte[] test(List<byte[]> values) ...

  9. JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换

    在面试中被问到这个问题,想到两种解决方式,在此分享一下. 第一种,使用简单的数学运算达到目标(但是面试官往往会问你还有没有其他方式): public static void main(String[] ...

随机推荐

  1. django model 中class meta

    class Meta: ordering = ['-num', 'length'] verbose_name = 'name' verbose_name_plural = 'names' orderi ...

  2. git patch

    http://www.cnblogs.com/y041039/articles/2411600.html

  3. Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔

    一.前言 新的小团队需要搭建一个缺陷管理的工具,之前用过bugfree,感觉比较适合,但是 禅道不太适合,放弃之,于是又百度推荐的: .JTrac13.BugNet14.BugOnline15.eTr ...

  4. jquery的.submit

    $("form").submit(function(e){ alert("Submitted"); });

  5. 【译】为什么这样宏定义#define INT_MIN (-2147483647 - 1)?

    2的32次方为2147483648*2,0~(2147483648*2-1)这是32位机上无符号整数代表的范围.而32机的int范围为-2147483648~+2147483647 stackover ...

  6. Windows Server 2003/2008 单网卡搭建VPN

    Windows Server 2003/2008 单网卡搭建VPN 1.打开[控制面板] --> [管理工具] --> [路由和远程访问] 2.鼠标右击你要管理的电脑 在弹出式菜单中选中[ ...

  7. Linux命令之reset - 终端屏幕混乱的终结者

    用途说明 reset命令是用来重新初始化终端的(terminal initialization).在有些情况,终端显示会混乱无比,比如不小心显示了一个二进制文件,以前我在不知道reset命令时,只好将 ...

  8. linux C学习笔记01--makefile

    不知不觉毕业五年了,以前学的linux基本都忘了,重新温习起来吧! 下面是自己写的makefile文件,供新手和自己回头时查阅 CC=gcc EXE=c.out CCC=g++ EEE=cc.out ...

  9. JavaWeb总结--Servlet 工作原理解析

    从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力 ...

  10. C#页面前台绑定数据 <%%><%#%><%=%>

    ASP.net前台绑定用的最多,今天小小总结一下. 1:<%#Eval("")%> 2:<%#Bind("")%> 3:<%=变量 ...