OCA Java imtahan mövzuları

Creating and Using a Multidimensional Array

Creating a Multidimensional Array
int[][] arr1;               // 2D array
int arr2[][];               // 2D array
int[] arr3[];               // 2D array
int[] arr4[], arr5[][];     // 2D array and 3D array

String[][] arr6 = new String[3][2];  // 3 arrays with 2 elements, [0][0]-[2][1]

Öncəki mövzuda qeyd etmişdik ki, təkölçülü massiv yaradılarkən ölçüsü mütləq qeyd edilməlidir. Amma çoxölçülü massivlərdə sonuncu ölçü buraxıla bilər, məsələn biz massivi aşağıdakı şəkildə yarada bilərik:

  • int[][] a = new int[2][];

Bu massivin əgər ikinci ölçüsü tanımlanmırsa null hesab edilir. Yəni bu ikiölçülü massiv özü iki massivdən (a[0]a[1]) ibarətdir və hər iki massiv null`dur:

int[] a[] = new int[2][];
System.out.println(a[0]);     // output: null
System.out.println(a[0][1]);  // throws NullPointerException

Amma null olan massivlərə təkrar yeni dəyər mənimsədilə bilər:

int[][] arr = new int[4][];
arr[0] = new int[5];
arr[1] = new int[3];
arr[2] = new int[2];
arr[3] = new int[0];
arr[4] = new int[1];      // throws ArrayIndexOutOfBoundsException
arr[5] = new int[];       // does not compile
arr[1] = new Integer[2];  // does not compile

Biz yuxarıda ölçünün qeyd edilməməsi ilə bağlı 2 ölçülü massiv nümunəsinə baxdıq, amma çoxölçülü massivlərdə bir neçə ölçü buraxıla, qeyd edilməyə bilər. Bir şərtlə ki, birinci ölçü qeyd edilsin və buraxılan ilk ölçüdən sonra heç bir ölçü qeyd edilməsin (sağda). Nümunə üzərindən daha aydın olacaq:

int a[][][][] = new int[4][3][3][2];
int b[][][][] = new int[4][3][][];
int c[][][][] = new int[4][][][];
int d[][][][] = new int[4][][3][];  // does not compile

Qeyd etmişdik ki, hər massiv bir obyektdir. Biz boş massiv yaratmaq üçün {} – fiqurlu mötərizələrdən istifadə edirik. Bu boş massiv özü bir obyekt hesab edilsə də biz bu sintaksisi birbaşa Object tipində olan dəyişənə mənimsədə bilmərik. Nümunə üzərindən baxsaq daha anlaşıqlı olacaq:

String strArr[] = {};
Object objArr1[] = {};
Object obj2 = strArr;
Object obj3 = {};                    // does not compile
Object objArr2[] = {"str", 7, {} };  // does not compile

Sonuncu sətirdə 7 primitiv tip olsa da autoboxing sayəsində Ineteger‘ə çevrilir və Object tip hesab edilir. Bu səbəbdən xəta vermir, xəta verən sonuncu elementdir.

Tutaq ki, 4 ölçülü massiv elan etmişik. Bu massivə mənimsədilən dəyərin də 4 ölçülü olub olmamasını təyin etmək üçün açılan mötərizələrin sayına fikir vermək lazımdır.

String[][][][] array4D = {  { null, {  {  }, { "x" }, null }, {  { "y" }   }, {  { "z", "p" }, {  }  }  }  }; 
//                       1o 2o      3o 4o 4c 4o    4c      3c 3o 4o    4c  3c 3o 4o         4c 4o 4c 3c 2c 1c

o – opening curly brace
c – closing curly brace

Ətraflı:
http://www.coderanch.com/t/648777/ocajp/certification/Review-Multidimensional-Array

 

 Using a Multidimensional Array
    int[][] twoD = new int[3][2];
    for(int i=0; i < twoD.length; i++){
        for(int j=0; j < twoD[i].length; j++)
            System.out.print(twoD[i][j] + " ");
        System.out.println();
    }

Output:

  • 0 0
    0 0
    0 0

forEach dövrü ilə bunu daha sadə formada yazmaq olar:

    for(int[] inner: twoD){
        for(int num: inner)
            System.out.print(num+" ");
        System.out.println();
    }

 

[topics lang=az]

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.