关于#java#的问题: 为什么下面这段代码的arr的输出值还是1234567没有被改变过,不是说传参的值是引用数据类型都是可以改变的吗
public static void rotate(int[] nums, int k) {
while (k > 0) {
int[] temp = new int[nums.length];
temp[0] = nums[nums.length - 1];
for (int i = 0; i < nums.length - 1; i++) {
temp[i+1] = nums[i];
}
k--;
nums = temp;
}
}
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
rotate(arr, 3);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
传递的参数nums 相当于是arr 引用的复制,大家指向的东西(假设叫A)是相同的,但是两者本身并不是同一个对象,你把temp赋值给nums ,也只是对nums的变化,使得nums指向变了(假设指向了B),对A又没有造成影响,那原来的arr还是指向A,自然还是原来的数据
java跟C不一样,必须要接收产生新的数组,这样你的顺序就变了。