• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > java如何写2个数字交换

java如何写2个数字交换

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了用java写猜数字游戏,java判断是否是数字,java 判断是否为数字,java从键盘输入数字,java字符串转换为数字等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:java如何写2个数字交换
描述:

刚学java 在网上也搜过 但是答案不太满意 求牛人指教


解决方案1:

我猜测你想说的是,Java这种没有“指针”或者“引用”的语言,怎么写C++里面的swap函数:

template<class T>
void swap(T& a, T& b) {
    T tmp(a);
    a = b;
    b = tmp;
}

Java里面的primitive type(boolean, double, float, int, byte, char, long, etc.)都是pass by value(事实上我个人比较喜欢认为Java只支持pass by value,只不过所有的Object都是pass by value of the reference,所以说你在函数里面修改Object型参数的引用不会影响caller和环境,因为Object reference也是copy的),所以如果你要交换primitive type的值,不能只用函数和传参,要用一个Wrapper Object。

以下是一个例子,没有任何意义,只是为了展示你可以这么做,但是……可以这么做不代表你应该这么做。

public final class SwapExample {

    public static void main(String[] args) {
        Integer a = 1;
        Integer b = 2;
        final Swap<Integer> s = new Swap<Integer>(a, b);
        a = s.getA();
        b = s.getB();
        System.out.println("a: " + a + ", b: " + b);
    }

    static class Swap<T> {
        private final T a;
        private final T b;

        public Swap(T a, T b) {
            this.a = b;
            this.b = a;
        }

        public T getA() {
            return a;
        }

        public T getB() {
            return b;
        }
    }
}

解决方案2:

位运算交换只能用于整型操作数

解决方案3:

数值交换,常见的方法就是用中间变量喽

c = a;
a = b;
b = c;

还有另一种种方法

a = a + b;
b = a - b;
a = a - b;

解决方案4:

还有一种是异或操作

public class TwoCups {
	static public void main(String []args) {
		int a = 2;
		int b = 9;
		a = a ^ b;
		b = b ^ a; // b ^ a ^ b
		a = a ^ b; // a ^ b ^ a
		System.out.println(a + " -- " + b);
	}
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • java如何写2个数字交换

相关文章

  • 2017-06-07 SHELLSEDAWK语法(shell)批量替换超大量的html文本
  • 2017-06-07 WordPress七牛镜像存储插件开启后,网站无法显示正常
  • 2017-06-07 为什么不能传递到子函数里面呢?
  • 2017-06-07 怎么修改macOS使用vue-cli后通过npmrundev自动打开的浏览器?
  • 2017-06-07 官方就不能开发一个dedecms使用七牛云的插件吗?
  • 2017-06-07 flaskmail发送不出消息smtp填写的是qq第三份授权码)
  • 2017-06-07 想通过iframe在页面上显示pdf文件?可是。。。。
  • 2017-06-07 TCP发送大的数据
  • 2017-06-07 问一个python入门问题
  • 2017-06-07 爬虫程序爬虫程序怎么记录进度

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 通过ESB搭建SOA的一些问题
    • 有没有一种方式让我同时部署多个不同项目到不同的服务器上面去呢?
    • 关于threadingThread类派生的问题
    • 关于c语言中链表中的指针问题求助
    • (python)怎么告诉virtualenv我新安装了PIL,然后在特定版本的环境中使用?
    • http://localhost:8080/jmx-console显示空页面
    • 你好,我需要七牛云64位windows的c++的动态库,最好是vs2008编译的
    • Laravel中类中的构造函数传参是可以自动new一个传递进去的吗?
    • 七牛挂了么?我的空间为何无法使用了,打客服也没人接电话,这是闹哪样?
    • C#SDK接口未更新的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有