java中方法的参数是值传递。基本类型的数据无法实现赋值
程序员文章站
2024-03-23 14:41:40
...
想写一个交换的方法
//exchange
public static void swap(double a,double b){
double temp;
temp=b;
b=a;
a=temp;
System.out.printf("in swap function,after swap,a is %.2f,b is %.2f\n",a,b);
}
但是查阅了资料,这个方法执行后,只会改变方法体里的变量值。方法体之外的变量还是原来的样子。
//exchange basic dataType
double a=1.0;
double b=2.0;
Tools.swap(a,b);
System.out.printf("a is %.2f,b is %.2f\n",a,b);
两种解决方案:
1.不用方法,每次交换都现写
double temp;
temp=b;
b=a;
a=temp;
2.将基本数据类型包装到引用数据类型里
class DataSwap{
double value;
}
//exchange basic dataType
double a=1.0;
double b=2.0;
Tools.swap(a,b);
System.out.printf("a is %.2f,b is %.2f\n",a,b);
//exchange reference dataType
DataSwap dataObj1=new DataSwap();
DataSwap dataObj2=new DataSwap();
dataObj1.value=1;
dataObj2.value=2;
Tools.swap(dataObj1,dataObj2);
System.out.printf("a is %.2f,b is %.2f\n",dataObj1.value,dataObj2.value);
//exchange
public static void swap(DataSwap ds1,DataSwap ds2){
double temp;
temp=ds2.value;
ds2.value=ds1.value;
ds1.value=temp;
System.out.printf("in swap function,after swap,a is %.2f,b is %.2f\n",ds1.value,ds2.value);
}
应该可以用自动装箱拆箱来解决
上一篇: 面向对象——封装
下一篇: 258递归实现字符串的逆序存储