2011-09-19 13 views
1

Java Day 1 from C#. 그냥 재미있게 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; 
      } 
     } 
    }   
    } 
} 

답변

4

배열은 Java의 객체 유형이므로 참조로 액세스 할 수 있습니다. 메서드를 호출 할 때 * 참조를 원래 배열에 전달하므로 메서드가 원래 배열에 액세스 (및 수정)합니다.


*이 모든 날카로운 눈의 pedants에, 나는 "당신이 자바에서 참조에 의해 전달"착오를 피하기 위해 매우 조심하고있다.

0

엄밀히 얘기 어레이를 변경하지 않는 경우의 위치 내에서 콘텐츠를 이동하는

[1,3,2,4-] => [1,2,3,4] 같은 4 배열 길이는 2 위와 3 위의 내용이 바뀌 었습니다.

관련 문제