2012-05-18 3 views
-2

의 배열 내가 좋아하는 자바 방법으로 배열을 초기화 할 경우최종 2D 자바

final double[][] myArray = new double[r][c]; 

나는이 방법으로 나중에이 작업을 수행 할 수됩니까?

myArray[0] = new double[c]; 
+2

예. 너 혼자 힘으로하지 않았 니? –

답변

2

난 당신이의 예를 제공합니다 :

public class Main { 
    public static void main(String[] args) { 
     final int[] finalArray = new int[5]; 
     finalArray[0] = 10; 
     System.out.println(finalArray[0]); 
     finalArray[0] = 9001; 
     System.out.println(finalArray[0]); 
     finalArray = new int[5] //compile error!!! 
    } 
} 

이있는 final 수정 배열 (포인터)에 대한 참조가 변경할 수없는 말 때문에하지만, 배열의 요소 (다른 포인터를 가질 수 있음)는 문제없이 바뀔 수 있습니다.

편집 : 2 차원 배열

또 다른 예 :

public class Main { 
    public static void main(String[] args) { 
     final int[][] array2d = new int[5][]; 
     for(int i = 0; i < array2d.length;i++) { 
      array2d[i] = new int[6]; 
     } 
     //the size of the rows can change with no problem. 
     array2d[0] = new int[8]; 
    } 
} 
+0

건설적인 답장을 보내 주셔서 감사합니다. 2D 경우에는 배열의 모든 개별 행을 포인터가있는 다른 배열로 가정하고이를 수행 할 때 참조를 변경하고 있습니까? – Erol

+0

예, 코드를 사용해도 작동합니다. 이 샘플로 업데이트를하겠습니다. –

3

예. 가능합니다. 배열에 대한 자세한 내용은 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

+0

정확히 어떻게 링크가 질문에 정확히 연결되는지는 확실하지 않다. – Attila

+0

나는 최종 키워드에 대해 염려했었다. 왜냐하면 다른 곳에서이 초기화를하면 배열에 대한 참조를 변경할 수 없기 때문이다. 그런 식으로 참조를 변경하지 않습니까? – Erol

+0

허용되는 하나의 요소에 대한 참조 만 변경합니다. – Celeritas