数值交换问题

在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
相关文章
相关标签/搜索