Java中实现类交换的方法
发布网友
发布时间:2022-04-25 15:38
我来回答
共5个回答
热心网友
时间:2023-10-13 16:35
java中是值传递,对于基本数据类型来说是传值的,对于自定义的数据类型或应用数据类型是传递引用的。你的DATA类属于传引用。而引用传递则传进来的是该对象的一个别名,即引用该对象在虚拟机中的“地址”,因此引用传递会对该“地址”的内部属性产生影响,而不会改变该“地址”在虚拟机中的位置,即引用传递在外部看来是没有发生过任何变话的,但从内部看来,它的属性会随着调用它的方法的改变而改变。因此你的交换方法不好使。
建议这样修改
public static void swap(Date x, Date y) {
Date temp =null;
temp.setYear(x.year);
temp.setMonth(x.month);
temp.setDay(x.day);
x.setYear(y.year);
x.setMonth(y.month);
x.setDay(y.day);
y.setYear(temp.year);
y.setMonth(temp.month);
y.setDay(temp.day);
}
热心网友
时间:2023-10-13 16:36
1.借助中间量交换
int x = 10;
int y = 20;
int temp = x;
x = y;
y = temp;
此种方法可以将中间量看成空杯,即把temp看成是空杯,
把x看成是装有白酒的杯子,把y看成是装有红酒的杯子
int temp = x; 把白酒倒到空杯中,此时temp装有白酒,x变成空杯
x = y; 把y中的红酒倒到x空杯中,此时x装有红酒,y变成空杯
y = temp;
把白酒倒到y空杯中,此时x装有红酒,y装有白酒,实现x和y的互换
2.数值相加减交换
int x =
10;
int y = 20;
x = x + y;
y = x - y;
x = x - y;
此种方法通过先求得两数的和再进行减运算
x = x + y; 此时x的值为10+20=30;
y = x - y;
此时的x经上面的运算变成30,所以y = 30 - 20 = 10;
x = x - y; 此时的y经上面的运算变成10,所以x = 30 - 10 =
20;实现两个数的互换
3.位移运算交换
int x = 10;
int y =
20;
x = x ^ y;
y = x ^ y;
热心网友
时间:2023-10-13 16:36
你的方法
public static void swap(Date x, Date y) {
Date temp = x;
x = y;
y = temp;
}
可以实现java对象交换的,但是对于简单类型不行
热心网友
时间:2023-10-13 16:37
这个问题的确很典型,java实现这样的方法非常麻烦。
那个地方没有必要一定要调用方法吧这样写不行吗?
if (date[j].compareDate(date[j + 1]) > 0)
{
Date temp =date[j];
date[j]=date[j+1];
date[j+1] = temp;
}
热心网友
时间:2023-10-13 16:38
我都蒙了。。。。