好久没有写博客了,一直以为我写的博客如果是大家都了解的技术,那么我的贡献也就微乎其微了,故学到了新技术,新教训,也很少来写在博客上,最近听同学说,写博客若是为了贡献,那么直接去研究好了,那只是记录自己的成长,我想,是啊,很有道理,好了 ,废话不多说,开始写。
会c和c++的童鞋都知道,交换值很简单,设置一个中间变量,来交换就很快搞定,可是在Java中如果交换的值是基本数据类型,那么交换就没有那么简单咯,好了,大家看下面一个例子:
private static int a,b;
public static void swapOne(int i[],int index1,int index2){//有人会想到用数组,因为数组是引用类型
a=index1;
b=index2;
int temp =i[a];
i[a] =i[b];
i[b] = temp;
}
public static void swapTwo(int i, int j) {//当然咯,大家肯定首先想的就是利用中间值来替换咯
int temp=i;
i=j;
j=temp;
}
public static void swapThree(int i,int j) {//当然,异或也可以完成,一个数 被另一个数异或两次,原数不变,还比设中间值效率高,不用多占内存
i^=j;
j^=i;
i^=j;
}
public static void swapFour(int i,int j) {//当然,这个好像也可以,可惜,不行
i=i+j;
j=i-j;
i=i-j;
}
可是上述都不能达到想要的效果,为什么呢,基本数据类型原因
那么,什么办法替换值呢,很简单,在需要替换的地方,进行替换,不用方法调用