Доступ к переменной из другого метода - PullRequest
1 голос
/ 20 сентября 2011

Java День 1 от c #.Просто поигрался с java (просто для удовольствия) и подумал, что этот пример был интересным, меня привлекает то, как метод пузырьковой сортировки получает доступ к intArray?хорошо, я знаю, что он передается как переменная ... но это изменение исходного массива?Я мог бы понять, какой метод пузырьковой сортировки напечатал новый массив, но это оригинальный метод?Круто, но теперь уверен, как / почему это разрешено?(надеюсь, я объяснил это правильно)

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 ]

4 голосов
/ 20 сентября 2011

Массивы являются типами объектов в Java, и поэтому доступны по ссылке. Вы передаете ссылку * в исходный массив при вызове метода, чтобы метод получил доступ (и изменил) к исходному массиву.


* Всем педантикам с острыми глазами я очень осторожен, чтобы избежать ошибки «Вы передаете по ссылке на Java».

0 голосов
/ 20 сентября 2011

Строго говоря, вы не изменяете массив, вы перемещаете его содержимое в пределах позиций

[1,3,2,4] => [1,2,3,4] - это тот же массив 4 длины, но содержимое 2-й и 3-й позиции получило измененное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...