以下是我模拟俄罗斯方块销行方法的代码
方法描述:某行满了以后,将上一行赋值给下一行,顶行清空为0
public class Systemarraycopy {
public static void main(String args[]){
int[][] wall ={{0,2,1},{1,2,1},{2,2,1},{3,2,1},{4,2,1}};
for(int i = 0;i<5;i++){
int[] line = wall[i];
System.out.println(Arrays.toString(line));
}
System.out.println();
for(int i = 3;i>=1;i--){
System.arraycopy(wall[i-1], 0, wall[i], 0, 3);
//wall[i]=wall[i-1];(如果使用注释掉的这句就会出现问题)
if(i==1)Arrays.fill(wall[0], 0);
}
for(int i = 0;i<5;i++){
int[] line = wall[i];
System.out.println(Arrays.toString(line));
}
}
}
使用System.arraycopy结果
使用wall[i]=wall[i-1]结果
上面使用arraycopy的是理想结果
但是如果把if(i==1)Arrays.fill(wall[0],0);去掉
两种方法结果一样!
为什么会出现这种情况?请高人指点啊