最近在写算法的时候,遇到一个问题。
java中编写swap(交换)方法还需要传入一个数组,但是在c++中则不需要。
可以看到,在没有传入数组进行交换数组元素的时候,交换前与交换后的值是一样的。
而在c++中:
void Swap(int *p1,int *p2)
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
zaic中swap函数的交换是进行地址的交换。
在Java中基本类型是按照值传递,当把对象传入方法,此时的对象是对象的引用也就是一个副本,而在方法中只有对对象进行修改才能影响到改对象的值,而对对象的引用进行操作是无法影响到对象的,所以java在编写swap方法的时候,需要将对象传入方法,也就是: