故在c++中能够很容易的将数据交换写为一个函数,并在其余函数中调用 java
#include <iostream> using namespace std; void swap(int* , int*); void swap(int &,int &); int main() { int a = 1,b = 2; swap(&a,&b); cout<<a<<" "<<b<<endl; swap(a,b); cout<<a<<" "<<b<<endl; return 0; } void swap(int* a, int* b){ int temp = *a; *a = *b; *b = temp; } void swap(int &a,int &b){ int temp = a; a = b; b = temp; } //不使用参数的交换方式 void swap2(int &a,int &b){ a = a + b; b = a - b; a = a - b; }而在java中,上述方法是行不通的。
public class Swap { /** * 方法名称:main() * 方法描述: * @param * @return String * @Exception */ public static void main(String[] args) { // TODO Auto-generated method stub int a = 2; int b = 3; swap(a,b); System.out.println(a + "sf " + b); } /** * 方法名称:swap() * 方法描述:该方法没法实现交换 * @param * @return String * @Exception */ private static void swap(int a, int b){ a = a + b; b = a - b; a = a - b; System.out.println(a + " " + b); } }因为形参是值传递,当swap函数结束时,形参 a 和 b的生命周期结束,其所拥有的数据天然消失。 可行的办法 1. a 和 b设置为静态变量。 2. 写一个交换类,a和b做为其属性 3. 采用数组 参考:http://bbs.csdn.net/topics/360263839