數值交換問題

在c++中存在指針和引用的概念,是對地址進行操做。可是在Java中,對於基本數據類型做爲形參,則只能是值傳遞;而對象只能傳引用

故在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
相關文章
相關標籤/搜索