static int[] rotLeft(int[] a, int d) {
int alen=a.length;
int []chushi=new int[alen];
//chushi=a;有没有这一行为什么结果会差很多
int index=0;
for(int i=0;i<alen;i++)
{
index=(i+(alen-d))%alen;/////////????????????
chushi[index]=a[i];
}
return chushi;
}
这是Java中常见的“对象引用”问题。
首先,chushi只是一个对象引用,指向的是堆空间里面的对象值;
chushi=a;那么现在就很好理解了:
你代码for循环中这句代码chushi[index]=a[i];就相当于给对象重新赋值了!你可以这样检测,不要指向同一个对象,而是指向单独的对象,虽然值是一模一样,但是却互不影响了:
public static int[] rotLeft(int[] a, int d) {