|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具 |
|