ARRAY

 

 

 

1.      Declare (membuat reference variabel array)

2.      Construct (membuat object array)

3.      Initialize (mengisi element-element array untuk pertamakalinya)

 

1. DEKLARASI

1.1 Deklarasi array satu dimensi

 

Cara 1 : TipeArray[] namaArray

 

Cara 2 : TipeArray namaArray[]

 

Cara 1 lebih direkomendasikan [1]

 

Contoh deklarasi array 1 dimensi: [1]

 

Int[] jumlahHari

Float[] nilaiQuis

String[] namaBulan

float nilaiPreTest[]

 

 

1.      Tipe data primitive

2.      Kelas non-abstract

3.      Kelas abstract

4.  interface

5.  enum

 

·         Contoh kelas abstract sebagai TipeArray : [1]

Program 01

 

abstract class A

{}

 

public class Abstract01

{

    public static void main(String[] args)

    {

        A[] a;

        a = new A[10];

        System.out.println("a.length = " + a.length);

    }

}

 

Program di atas akan menghasilkan :

a.length = 10

 

·         Contoh interface sebagai TipeArray : [1]

Program 02

 

interface I

{}

 

 

public class Interface01

{

    public static void main(String[] args)

    {

        I[] i;

        i = new I[11];

        System.out.println("i.length = " + i.length);

    }

}

 

Program di atas akan menghasilkan :

i.length = 11

 

·         Contoh enum sebagai TipeArray : [1]

Program 03

 

enum LampuLaluLintas

{

    MERAH, KUNING, HIJAU;

}

 

class Enum01

{

    public static void main(String[] args)

    {

        LampuLaluLintas[] lampu;

        lampu = new LampuLaluLintas[12];

        System.out.println("lampu.length = " + lampu.length);

    }

}

 

Program di atas akan menghasilkan :

lampu.length = 12

 

 

 

1.2 Deklarasi array multidimensi

·         Array multidimensi sebenarnya adalah array dari array. [1&2]

·         Deklarasi array multidimensi dilakukan dengan adanya lebih dari satu pasangan kurung siku di dalam deklarasi array. [1]

Jumlah pasangan kurung siku menyatakan dimensi suatu array. [1]

 

Cara 1 : TipeArray[][][]..[] namaArray

 

Cara 2 : TipeArray namaArray[][]..[]

 

Cara 3 : TipeArray[][]..[] namaArray[][]..[]

 

Cara 1 lebih direkomendasikan. [1&2]

 

·         Contoh deklarasi array multidimensi : [1]

Contoh

Jumlah dimensi

int[][] myInt

2

int myInt[][]

2

int[] myInt[]

2

float[][][] myFloat[][][]

6

char myChar[][][][][][][][][][][]

11

 

2. KONSTRUKSI

·         Konstruksi array berarti membuat object array pada heap. [2]

·         Pada saat konstruksi array, jumlah elemen harus sudah diketahui. [2]

·         Konstruksi array dapat dilakukan dengan banyak cara, diantaranya : [1]

1.      Menggunakan keyword new

2.      Deklarasi, konstruksi dan initialisasi dalam satu baris

3.      Annonymous array.

Yang dibahas di dalam subbab 2 ini adalah konstruksi array satu dan multidimensi menggunakan keyword new. [1]

2.1 Konstruksi array dimensi satu

·         Konstruksi array dimensi satu dapat dilakukan dengan menggunakan keyword new kemudian diikuti oleh tipe data yang dapat diisikan pada element array diikuti oleh jumlah element array yang diletakkan di dalam pasangan kurung siku. [1&2]

 

Konstruksi array dimensi satu dengan keyword new dapat dilakukan dengan 2 cara, yaitu :

Cara 1 : Deklarasi dan konstruksi pada baris yang berbeda

 

TipeArray[] namaArray;                       //Deklarasi

namaArray = new TipeArray[jumlahElement];    //Konstruksi

 

 

 

Cara 2 : Deklarasi dan konstruksi pada satu baris

 

TipeArray[] namaArray = new TipeArray[jumlahElement];

 

 

·         Contoh deklarasi dan konstruksi array pada baris yang berbeda : [1]

Program 04

 

public class Konstruksi01

{

    public static void main(String[] args)

    {

        int[] i;

        i = new int[100]; //konstruksi array

        System.out.println("i.length = " + i.length);

    }

}

 

Program di atas akan menghasilkan :

i.length = 100

Keterangan :

Pada program 04 akan terbentuk satu buah object array di heap, dimana object array tersebut akan dapat menampung 100 buah nilai bertipe int.

 

Program 05

 

class A

{}

       

public class Konstruksi02

{

    public static void main(String[] args)

    {

        A[] a;

        a = new A[50]; //konstruksi array

    }

}

 

Keterangan :

Pada program 05 akan terbentuk satu buah object array di heap, dimana object array tersebut akan dapat menampung 100 buah reference ke object dari kelas A. Tapi yang harus diingat, pada program 05 tidak ada satupun object dari kelas A yang dibuat.

 

·         Contoh deklarasi dan konstruksi array pada baris yang sama : [1]

Program 06

 

public class Konstruksi03

{

    public static void main(String[] args)

    {

        int[] i = new int[100]; //Deklarasi & konstruksi pada 1 baris

    }

}

 

 

·         Bila ada deklarasi sebagai berikut :

int[] myInt = new int[10]

            Maka deklarasi dan konstruksi di atas dapat diilustrasikan sebagai berikut : [1]

 

 

 

 

2.2 Konstruksi array dimensi banyak

·         Array dimensi banyak adalah array dari array. [2]

·         Konstruksi array dimensi banyak dengan keyword new dapat dilakukan dengan dua cara, yaitu : [1]

1.      Konstruksi array dimana setiap element memiliki ukuran yang sama.

2.      Konstruksi array dimana setiap element dapat memiliki ukuran yang berbeda.

·         Konstruksi array dimana setiap element memiliki ukuran yang sama dapat dilakukan dengan syntak sebagai berikut : [1]

 

TipeArray[][]..[] namaArray;

namaArray = new TipeArray[besarDimensi1][ besarDimensi 2]..[ besarDimensiN]

 

 

Ketika ada deklarasi seperti di atas, maka object array yang akan tercipta adalah sebanyak : [1]

 

1 + (besarDimensi1 * besarDimensi2 * ... * besarDimensi(N-1) )

 

 

Contoh :

Program 07

 

package array;

 

class MultiDimensi01

{

    public static void main(String[] args)

    {

        int[][] myInt = new int[3][9];

 

        System.out.println("myInt.length = " + myInt.length);

        for(int loop = 0; loop <i.length; loop++)

        {

            System.out.println("myInt[" + loop + "].length = " +

                     myInt[loop].length);

        }

    }

}

Program di atas akan menghasilkan :

myInt.length = 3

myInt [0].length = 9

myInt [1].length = 9

myInt [2].length = 9

Keterangan :

Pada saat deklarasi dan konstruksi

int[][]myInt = new int[3][9]

sebenarnya saat itu terbentuk 4(1+3) buah object array.

 

 

TipeArray[][][] namaArray;

 

//yang diberi nilai hanya kurung siku paling kiri.

namaArray = new TipeArray[3][][];

namaArray[0] = new TipeArray[2][];

namaArray[1] = new TipeArray[4][];

namaArray[2] = new TipeArray[3][];

 

namaArray[0][0] = new TipeArray[1];

namaArray[0][1] = new TipeArray[2];

 

namaArray[1][0] new TipeArray[3];

namaArray[1][1] = new TipeArray[4];

namaArray[1][2] = new TipeArray[5];

namaArray[1][3] = new TipeArray[6];

 

namaArray[2][0] = new TipeArray[7];

namaArray[2][1] = new TipeArray[8];

namaArray[2][2] = new TipeArray[9];

 

Dari contoh di atas, akan terbentuk 13 object array dan 45 object TipeArray.

 

Contoh program : [1]

Program 08

 

package array;

 

public class MultiDimensi02

{

    public static void main(String[] args)

    {

        int[][] myInt;

        myInt = new int[3][]; // sudah ada 1 object array

        myInt[0] = new int[9]; //sudah ada 2 object array

        myInt[1] = new int[2]; //sudah ada 3 object array

        myInt[2] = new int[5]; //sudah ada 4 object array

       

        System.out.println("myInt.length = " + myInt.length);

        System.out.println("myInt[0].length = " + myInt[0].length);

        System.out.println("myInt[1].length = " + myInt[1].length);

        System.out.println("myInt[2].length = " + myInt[2].length);

    }

}

 

Program di atas akan menghasilkan :

myInt.length = 4

myInt[0].length = 9

myInt[1].length = 2

myInt[2].length = 5

Keterangan :

Program di atas akan menghasilkan 4 object array, dimana keseluruhan object tersebut dapat menampung 16 nilai int.

 

Program di atas dapat diilustrasikan sbb : [1]

 

 

 

3. INITIALISASI

3.1 Inisialisasi element dengan nilai default

Berikut ini adalah table nilai default saat konstruksi : [1&3]

Tipe Element

Initial value

byte

0

short

0

int

0

long

0L

char

’\u0000’

float

0.0f

double

0.0d

boolean

false

Object reference

null

 

Contoh : [1]

Program 09

 

package array;

 

class NilaiDefaultKonstruksi01

{

    public static void main(String[] args)

    {

        int[] i = new int[10];

        char[] c = new char[10];

        float[] f = new float[10];

        boolean[] b = new boolean[10];

        Object[] o = new Object[10];

       

        if(i[0] == 0)

            System.out.println("Nilai default int adalah 0");

        if(c[0] == '\u0000')

            System.out.println("Nilai default char adalah '\\u0000'");

        if(f[0] == 0.0f)

            System.out.println("Nilai default float adalah 0.0f");

        if(b[0] == false)

            System.out.println("Nilai default boolean adalah false");

        if(o[0] == null)

            System.out.println("Nilai default object reference " +

                    "adalah null");

       

    }

}

 

Program di atas akan menghasilkan :

Nilai default int adalah 0

Nilai default char adalah '\u0000'

Nilai default float adalah 0.0f

Nilai default boolean adalah false

Nilai default object reference adalah null

 

3.2 Deklarasi, konstruksi, dan inisialisasi dalam satu baris (tanpa operator new)

Cara ini dapat dilakukan untuk array dimensi satu maupun array multidimensi. [1]

 

 

TipeArray[] namaArray = {nilaiElement1, ..., nilaiElementN};

 

Bila menggunakan cara di atas, maka jumlah element dari namaArray adalah sebanyak jumlah nilai yang disebutkan di dalam tanda kurung kurawal {}. [1&2]

 

Contoh : [1]

Program 11

 

package array;

 

class A

{

    private String sesuatu;

   

    A(String sesuatu)

    {

        this.sesuatu = sesuatu;

    }

   

    public String toString()

    {

        return sesuatu;

    }

}

 

class DeklarasiKonstruksiInisialisas01

{

    public static void main(String[] args)

    {

        A[] a = {new A("Hallo"), new A("Apa"), new A("Kabar")};

               

        System.out.println("Jumlah element = " + a.length);

        for(A loop : a)

        {

            System.out.println(loop);

        }

    }

}

Program di atas akan menghasilkan :

Jumlah element = 3

Hallo

Apa

Kabar

 

Penulisan sintak :

 

TipeArray[] namaArray = {nilaiElement1, ..., nilaiElementN};

 

 

Tidak dapat dipecah menjadi 2 baris sbb :

 

TipeArray[] namaArray;

namaArray = {nilaiElement1, ..., nilaiElementN};

 

 

Contoh : [1]

Program 12

 

package array;

 

class A

{

    private String sesuatu;

   

    A(String sesuatu)

    {

        this.sesuatu = sesuatu;

    }

   

    public String toString()

    {

        return sesuatu;

    }

}

 

class DeklarasiKonstruksiInisialisas01

{

    public static void main(String[] args)

    {

        A[] a;

        a = {new A("Hallo"), new A("Apa"), new A("Kabar")}; //ERROR !!!

               

        System.out.println("Jumlah element = " + a.length);

        for(A loop : a)

        {

            System.out.println(loop);

        }

    }

}

 

Program di atas akan menghasilkan compile time error sbb :

E:\Data\Data NetBeans\Belajar SCJP\src\array\DeklarasiKonstruksiInisialisas01.java:23: illegal start of expression

        a = {new A("Hallo"), new A("Apa"), new A("Kabar")};

1 error

 

 

Contoh : [1]

Program 13

 

package array;

 

public class DeklarasiKonstruksiInisialisas02

{

    public static void main(String[] args)

    {

        int[][][] i = {{{10, 2, 3}, {1, 2}},

                       {{11, 12, 13}},

                       {{2, 7}, {4, 5, 1}, {3,2}}};

       

        for(int d1 = 0; d1 < i.length; d1++)

        {

            for(int d2 = 0; d2 < i[d1].length; d2++)

            {

                for(int d3 = 0; d3 < i[d1][d2].length; d3++)

                {

                    System.out.println("i[" + d1 + "][" + d2 + "][" +

                                     d3 + "] = " + i[d1][d2][d3]);

                }

                System.out.println();

            }                   

            System.out.println();

        }

               

    }

}

 

Program di atas akan menghasilkan :

i[0][0][0] = 10

i[0][0][1] = 2

i[0][0][2] = 3

 

i[0][1][0] = 1

i[0][1][1] = 2

 

 

i[1][0][0] = 11

i[1][0][1] = 12

i[1][0][2] = 13

 

 

i[2][0][0] = 2

i[2][0][1] = 7

 

i[2][1][0] = 4

i[2][1][1] = 5

i[2][1][2] = 1

 

i[2][2][0] = 3

i[2][2][1] = 2

Keterangan : Program di atas akan menghasilkan 10 object array

 

3.3 Anonymous array

Sintaks : [1]

 

TipeArray[] namaArray;

namaArray = new TipeArray[] {nilaiElement1, …, nilaiElementN};

 

Yang harus diingat dari sintaks di atas, jumlah element array tidak pernah ditulis!!! Jumlah element array ditentukan oleh banyaknya nilai element yang disebutkan di dalam tanda kurung kurawal {}. [1&2]

 

Contoh : [1]

Program 14

 

class AnonymousArray01

{

    public static void main(String[] args)

    {

        int[] myInt;

        myInt = new int[] {1, 5, 6, 2}; //anonymous array

       

        for(int i : myInt)

        {

            System.out.println(i);

        }

    }

}

 

Program di atas akan menghasilkan :

1

5

6

2

 

Contoh : [1]

Program 15

 

class AnonymousArray02

{

    static void myMethod(int[][] nilai)

    {

        for(int i = 0; i < nilai.length; i++)

        {

            for(int j = 0; j < nilai[i].length; j++)

            {

                System.out.print(nilai[i][j] + " ");

            }

            System.out.println();

        }

    }

    public static void main(String[] args)

    {

        myMethod(new int[][] {{1, 9, 3}, {4, 2, 10}, {1}, {0, 0, 9}});

    }

}

 

 

 

4. ASSIGNMENT PADA ARRAY

1.      Assignment element array

2.      Assignment object array

Contoh : [1]

Program 16

 

class AssignmentElement01

{

    public static void main(String[] args)

    {

        int[] myArray = new int[4];

       

        myArray[2] = 234; //Assignment element array

    }

}

 

 

Contoh : [1]

Program 17

 

class AssignmentObject01

{

    public static void main(String[] args)

    {

        int[][] arrayDim2 = new int[2][];

        int[] arrayDim1_1 = new int[10];

        int[] arrayDim1_2 = new int[3];

 

        arrayDim2[0] = arrayDim1_1; //assignment object array

        arrayDim2[1] = arrayDim1_2; //assignment object array

    }

}

 

 

4.1 Assignment element array

Contoh : [1]

Program 18

 

class AssignmentElement02

{

    public static void main(String[] args)

    {

        int[] myInt = new int[200];

        byte b = 100;

       

        myInt[45] = b;

        System.out.println("myInt[45] = " + myInt[45]);

    }

}

 

Program di atas akan menghasilkan :

myInt[45] = 100

 

Contoh : [1]

Program 19

 

abstract class A {}

class B extends A{}

 

class AssignmentElement03

{

    public static void main(String[] args)

    {

        A[] a = new A[10];

        B b = new B();

       

        a[2] = b;

    }

}

 

4.2 Assignment object array

Contoh : [1]

Program 20

 

class AssignmentObject02

{

    public static void main(String[] args)

    {

        int[][][][] arrayDim4 = new int[100][][][];

        int[][][] arrayDim3 = new int[23][][];

        int[][] arrayDim2 = new int[3][];

        int[] arrayDim1 = new int[20];

   

        arrayDim1[1] = 999;

        arrayDim2[2] = arrayDim1;

        arrayDim3[5] = arrayDim2;

        arrayDim4[1] = arrayDim3;

       

        System.out.println("arrayDim4[1][5][2][1] = "

                                    + arrayDim4[1][5][2][1]);

    }

   

}

Program di atas akan menghasilkan :

arrayDim4[1][5][2][1] = 999

 

Contoh : [1]

Program 21

 

public class AssignmentObject03

{

    public static void main(String[] args)

    {

        int[][] myInt = new int[10][];

        byte[] myByte = new byte[199];

       

        myInt[8] = myByte; //ERROR !!!

    }

}

 

Compile time error yang akan dihasilkan oleh program di atas adalah :

E:\Data\Data NetBeans\Belajar SCJP\src\array\AssignmentObject03.java:10: incompatible types

found   : byte[]

required: int[]

        myInt[8] = myByte; //ERROR !!!

1 error

 

Contoh : [1]

Program 22

 

class A {}

class B extends A {}

 

public class AssignmentObject04

{

    public static void main(String[] args)

    {

        A[][] a1 = new A[2][];

        A[] a2 = new A[109];

        B[] b = new B[23];

        a1[0] = a2;

        a1[1] = b;

    }

}     

 

5. MENGAKSES ARRAY

Contoh : [1]

Program 23

 

 

class AksesArray01

{

    public static void main(String[] args)

    {

        int[][] i = {{1, 9}, {3, 4, 6}};

       

        System.out.println("i[0][0] = " + i[0][0]); //Mengakses array

        System.out.println("i[0][1] = " + i[0][1]); //Mengakses array

        System.out.println();

        System.out.println("i[1][0] = " + i[1][0]); //Mengakses array

        System.out.println("i[1][1] = " + i[1][1]); //Mengakses array

        System.out.println("i[1][2] = " + i[1][2]); //Mengakses array

    }

}

 

Program di atas akan menghasilkan :

i[0][0] = 1

i[0][1] = 9

 

i[1][0] = 3

i[1][1] = 4

i[1][2] = 6

 

length menyatakan jumlah element di dalam array, tapi length tidak pernah menyatakan apakah element-element itu telah diinisialisasi atau tidak. [1&2]

Contoh : [1]

Program 24

 

class Length01

{

    public static void main(String[] args)

    {

        int[][] i = {{10, 43, 45}, {23}, {3, 5}};

       

        System.out.println("i.length = " + i.length);

        System.out.println("i[0].length = " + i[0].length);

        System.out.println("i[1].length = " + i[1].length);

        System.out.println("i[2].length = " + i[2].length);

    }

}

 

Program di atas akan menghasilkan :

i.length = 3

i[0].length = 3

i[1].length = 1

i[2].length = 2

 

Pengertian index di luar batas adalah bila : [1]

1.      index array >= length

2.      index array < 0

 

Contoh : [1]

Program 25

 

public class ArrayIndexOutOfBoundsException01

{

    public static void main(String[] args)

    {

        int[] i = new int[10];

        System.out.println("i[10] = " + i[10]); //Exception

        System.out.println("i[-1] = " + i[-1]); //Exception

    }

}

 

Runtime error yang akan dihasilkan program di atas adalah :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

        at array.ArrayIndexOutOfBoundsException01.main(ArrayIndexOutOfBoundsException01.java:8)

Java Result: 1

 

·         Kita akan mendapatkan NullPointerException bila kita berusaha untuk menggunakan element array di dalam object array bila element tersebut tidak merujuk ke object sesungguhnya. [2]

Contoh : [1]

Program 26

 

class A

{

    void lakukanSesuatu()

    {

        System.out.println("A.lakukanSesuatu()");

    }

}

 

class NullPointerException01

{

    public static void main(String[] args)

    {

        A[] a= new A[100];

        a[9].lakukanSesuatu(); //EXCEPTION !!!

    }

}

 

Exception yang akan dilemparkan :

Exception in thread "main" java.lang.NullPointerException

        at array.NullPointerException01.main(NullPointerException01.java:16)

Java Result: 1

 

Contoh for-each untuk array dimensi satu : [1]

Program 27

 

class ForEach01

{

    public static void main(String[] args)

    {

        int[] myInt = {10, 20, 4, 12, 54};

       

        //for-each untuk array dimensi satu

        for(int i : myInt)

        {

            System.out.println(i);

        }

    }

}

 

Program di atas akan menghasilkan :

10

20

4

12

54

 

      Contoh for-each untuk multidimensi : [1]

Program 28

 

package array;

 

class A

{

    private String sesuatu;

    A(String sesuatu)

    {

        this.sesuatu = sesuatu;

    }

   

    String getSesuatu()

    {

        return sesuatu;

    }

}

 

class ForEach02

{

    public static void main(String[] args)

    {

        A[][][] a = {

                        {

                            {      

                                new A("Hallo"),

                                new A("Apa"),

                                new A("kabar ?")

                            },

                            {

                                new A("Nama"),

                                new A("saya"),

                                new A("Anton")

                            }

                        },

                        {

                            {

                                new A("nama"),

                                new A("kamu"),

                                new A("siapa ?")

                            }

                        }

                    };  

 

        //for-each untuk multidimensi

        for(A[][] loop1 : a)

        {

            for(A[] loop2 : loop1)

            {

                for(A loop3 : loop2)

                {

                    System.out.println(loop3.getSesuatu());

                }

            }

        }

    }

}

 

Program di atas akan menghasilkan :

Hallo

Apa

kabar ?

Nama

saya

Anton

nama

kamu

siapa ?

 


[1] M. Desdrianton Islamy.

[2] Sun Certified Programmer for Java 5 Study Guide, by Katherine Sierra and Bert Bates.

[1&2] Dari [2] kemudian dirubah oleh [1]

[3] Complete Java® 2 Certification: Study Guide,Fifth Edition, by Philip Heller and Simon Roberts

[1&3] Dari [3] kemudian dirubah oleh [1]

 

Document versi 1 : Minggu, 23 Juli 2006