仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 489|回复: 9
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java中不利用两头变量互换两个数

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。
在程序中完成互换两个数的功效其实不庞大,但假如不利用两头变量,就必要动一下头脑。在本文先容了两个办法(实在道理都是一个)。其基础道理就是数的中和。也就是说,经由过程某种运算(二元运算)将a和b两个数酿成一个数,并保留在个中一个变量中。然后再经由过程同样的运算符将a或b中和失落。如许实践上是使用了a或b自己作为了两头变量。
先看第一个算法。
static class Num
{
    int a;
    int b;
}
public static void swap1(Num num)
{
    num.a = num.a + num.b;
    num.b = num.a - num.b;
    num.a = num.a - num.b;
}
下面代码经由过程“+”运算符将a和b的运算了局赋给了a(这时候a是两头变量)。然后再盘算b,这时候a的值已是(a+b)了,因而,a再减b就是本来的a。而这时候b已是本来的a了,因而,再用运算后的a(实践上是a+b)减运算后的b(实践上是本来的a),就是本来的b了,最后将这个b赋值给a。
实践上,我们还可使用“*”、“/”等标记来完成一样的效果,代码以下:
public static void swap2(Num num)
{
    num.a = num.a * num.b;
    num.b = num.a / num.b;
    num.a = num.a / num.b;
}
public static void swap3(Num num)
{
    num.a = num.a - num.b;
    num.b = num.a + num.b;
    num.a = num.b - num.a;
}
下面代码在Java中没有甚么成绩(但利用“/”时,分母和份子不克不及为0)。就算溢出也会失掉准确的了局,但有某些言语中(如C言语),大概会抛出溢堕落误,不了制止这类毛病。能够加判别,代码以下:
public static void swap4(Num num)
{
    // 分歧标记
    if (num.a * num.b <= 0)
    {
        num.a = num.a + num.b;
        num.b = num.a - num.b;
        num.a = num.a - num.b;
    }
    else
    {
        num.a = num.a - num.b;
        num.b = num.a + num.b;
        num.a = num.b - num.a;
    }
}
固然,我们另有更好的办法,就是利用异或运算符,我们晓得,任何数与0异或后仍旧为它自己,两个不异的数异或后为0。基本这类特性,能够有以下代码。
public static void swap5(Num num)
{
    num.a = num.a ^ num.b;
    num.b = num.a ^ num.b;
    num.a = num.a ^ num.b;
}

唉!都是钱闹的1.Swing和.net开发比较------从市场份额看.net开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-22 18:11:41 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
蒙在股里 该用户已被删除
9#
发表于 2015-3-16 00:37:30 | 只看该作者
是一种突破用户端机器环境和CPU
admin 该用户已被删除
8#
发表于 2015-3-8 13:39:03 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
7#
发表于 2015-2-26 10:50:47 | 只看该作者
是一种突破用户端机器环境和CPU
爱飞 该用户已被删除
6#
发表于 2015-2-8 21:11:21 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
莫相离 该用户已被删除
5#
发表于 2015-2-3 12:11:01 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
谁可相欹 该用户已被删除
地板
发表于 2015-1-31 06:35:09 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
再见西城 该用户已被删除
板凳
发表于 2015-1-22 12:33:57 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
简单生活 该用户已被删除
沙发
发表于 2015-1-20 13:17:06 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表