故在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