您的位置:首页 > 其它

数值交换问题

2014-03-29 00:00 197 查看
摘要: Java和c++中数值交换是有区别的

在c++中存在指针和引用的概念,是对地址进行操作。但是在Java中,对于基本数据类型作为形参,则只能是值传递;而对象只能传引用

故在c++中可以很容易的将数据交换写为一个函数,并在其他函数中调用

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐