来自c#的Java第1天。 只是玩java(只是为了好玩),并认为这个例子很有趣,让我得到的是bubblesort方法如何访问intArray?好吧,我知道它作为变量传递..但它修改原始数组?我能理解bubblesort方法打印出的新数组,但它的原始方法呢?很酷,但现在确定如何/为什么这是允许的? (希望我能正确解释)
public class HelloWorld {
public static void main(String[] args) {
//create an int array we want to sort using bubble sort algorithm
int intArray[] = new int[]{5,90,35,45,150,3};
//print array before sorting using bubble sort algorithm
System.out.println("Array Before Bubble Sort");
for(int i=0; i < intArray.length; i++)
System.out.print(intArray[i] + " ");
//sort an array in descending order using bubble sort algorithm
bubbleSort(intArray);
System.out.println("");
//print array after sorting using bubble sort algorithm
System.out.println("Array After Bubble Sort");
for(int i=0; i < intArray.length; i++)
System.out.print(intArray[i] + " ");
}
private static void bubbleSort(int[] intArray){
int n = intArray.length;
int temp = 0;
for(int i=0; i < n; i++){
for(int j=1; j < (n-i); j++){
if(intArray[j-1] < intArray[j]){
//swap the elements!
temp = intArray[j-1];
intArray[j-1] = intArray[j];
intArray[j] = temp;
}
}
}
}
}
答案 0 :(得分:4)
数组是Java中的对象类型,因此可以通过引用访问。在调用方法时,将引用 * 传递给原始数组,因此该方法访问(并修改)原始数组。
*对于所有目光敏锐的学生,我都非常小心地避免“你通过Java引用传递”的谬误。
答案 1 :(得分:0)
严格来说,您不是在修改数组,而是将其内容移动到位置
[1,3,2,4] =&gt; [1,2,3,4]是相同的4个长度数组,但第2个和第3个位置的内容得到了它们的值变化。