我试图制作一个简短的代码来切换数组中的第一个和最后一个值,并输出一个与第一个数组相同的新数组但是切换了这些值。尝试几次之后,我意识到我的第一个(原始)数组保持切换其[0]值,我不知道为什么。这是代码。
import java.util.Arrays;
public class testing {
public static void main(String[] args) {
int[] original={1,2,3,4};
int[] switched=original;
switched[0]=original[original.length-1];
switched[switched.length-1]=original[0];
System.out.println(Arrays.toString(switched));
}
}
我希望输出为[4,2,3,1],但我总是得到[4,2,3,4]。
答案 0 :(得分:1)
两者都是对同一个数组的引用
最初
1,2,3,4
后
switched[0]=original[original.length-1];
4,2,3,4
后
switched[switched.length-1]=original[0];
4,2,3,4
答案 1 :(得分:0)
因为switched
和original
指向同一个对象。
执行:
import java.util.Arrays;
public class testing {
public static void main(String[] args) {
int[] original={1,2,3,4};
int[] switched={1,2,3,4};
switched[0]=original[original.length-1];
switched[switched.length-1]=original[0];
System.out.println(Arrays.toString(switched));
}
}
答案 2 :(得分:0)
你应该知道一些魔法:)。
在这一行:int[] original={1,2,3,4};
您创建数组 {1,2,3,4} ,并在变量original
在这一行:int[] switched=original;
中,将original
对该数组的REFERENCE值复制到变量switched
中。
现在,您有两个引用同一个数组的变量!
要创建具有相同值的新数组,可以使用:
int [] switched = (int[])original.clone();