小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
每天一小步,成功一大步。大家好,我是程序猿小白 gw_GW,很高兴能和大家一起学习每天小知识。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要讲述java中的swap函数的实现。
swap
今天写了一下c语言的swap函数,不由得想起了Java中的swap函数如何实现。Java中是没有址传递的,只有值传递,因此会有下面的现象。
public class swapTest {
public static void main(String[] args) {
int a = 4;
int b = 5;
swap(a,b);
System.out.println("a= "+a+" "+"b= "+b);
}
public static void swap(int a,int b){
int temp = a;
a = b;
b = temp;
}
}
我们发现这样并不能真正的交换两个数的值。那我们应该怎么在java中实现swap函数呢?
参考了网上的很多方法,最实用的无疑是直接进行交换。
那你不禁要骂我了,这么简单还用你讲?
那我们接下来就看看如何使用“高大上”方法来实现。
使用数组实现
public class swapTest {
public static void main(String[] args) {
int a = 4;
int b = 5;
int arr[] = swap(a,b);
a = arr[0];
b = arr[1];
System.out.println("a= "+a+" "+"b= "+b);
}
public static int[] swap(int a,int b){
int arr[] = {b,a};
return arr;
}
}
这种方法也算是简单易懂的了,但是是不是感觉并没有比简单的交换语句简单多少?
再来看下面一种方法
外部内联
class Change{
int i;
int j;
public Change(int i,int j){
this.i = i;
this.j = j;
}
public void swap(Change c){
int temp = c.i;
c.i = c.j;
c.j = temp;
}
}
public class swapTest {
public static void main(String[] args) {
int a = 4;
int b = 5;
Change c = new Change(a,b);
c.swap(c);
a = c.i;
b = c.j;
System.out.println("a= "+a+" "+"b= "+b);
}
public static int[] swap(int a,int b){
int arr[] = {b,a};
return arr;
}
}
对于这种方法,我们首先要定义一个交换类,然后定义一个交换方法,在main中调用该方法即可。虽然这种方式也能够交换变量值,但是确实是没有直接交换简洁。
结语
因为Java中不能按照址传递,所以我们不能像C语言那样写一个交换函数,但我们也可以通过数组等其他方法来实现交换的功能,可以根据具体要交换的值的类型来决定使用什么方式交换,怎么交换。这个就靠大家开动脑筋了,虽然网上已经有很多例子了,但是却不一定是最适合你的。
一起加油吧!从一个简单的swap函数开始。