从不同方法访问变量

时间:2011-09-19 23:56:40

标签: java variables

来自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;
            }
        }
    }        
    }
}

2 个答案:

答案 0 :(得分:4)

数组是Java中的对象类型,因此可以通过引用访问。在调用方法时,将引用 * 传递给原始数组,因此该方法访问(并修改)原始数组。


*对于所有目光敏锐的学生,我都非常小心地避免“你通过Java引用传递”的谬误。

答案 1 :(得分:0)

严格来说,您不是在修改数组,而是将其内容移动到位置

[1,3,2,4] =&gt; [1,2,3,4]是相同的4个长度数组,但第2个和第3个位置的内容得到了它们的值变化。