Skip to content

Info

Semua file yang ada pada contoh pada catatan ini ada pada package Ch3/J3_10_Arrays

Arrays

Arrays menampung kumpulan data dengan tipe data yang sama.

Declaring Arrays

Array adalah sebuah data structure yang menyimpan kumpulan nilai dengan tipe data yang sama. Kita dapat mengakses nilai dari array tersebut menggunakan index.

Setelah sebuah array dibuat, kita tidak dapat mengganti panjang dari array tersebut (walaupun kita dapat mengganti nilai dari setiap element didalam array). Jika kita membutuhkan sebuah data structure yang dapat memperpanjang panjang dari arraysnya maka gunakan arraylist.

Code

package Ch3.J_3_10_Arrays;

public class J_1_Declaring_Arrays {
    public static void main(String[] args) {
        int[] value; // Declaring array
        value = new int[10]; // Initialize an array with int type
        value[0] = 27;
        value[1] = 12;
        System.out.printf("Value 1 %d\nValue 2 %d\nValue 3 %d\n",value[0],value[1],value[7]);
    }
}
Output
Value 1 27
Value 2 12
Value 3 0

Kita juga dapat menggunakan shorcut sehingga dengan satu baris kode kita dapat membuat variabel array dan menginisiasi dengan nilai.

Code

package Ch3.J_3_10_Arrays;

public class J_2_Dec_Ini_Arras_Shortcut {
    public static void main(String[] args) {
        String[] names = {"Farras & Tania", "Faris", "Noah", "Hilyah"};

        for (String name : names){
            System.out.println(name);
        }
    }
}
Output
Farras & Tania
Faris
Noah
Hilyah

Sah-sah saja membuat arrays dengan panjang nol. Seperti array yang dapat digunakan jika kita membuat sebuah method yang melakukan operasi sesuatu dan dengan returnya adalah array. Maka bisa saja hasil dari komputasi tersebut menghasilkan array dengan panjang nol. Array dengan panjang nol berbeda dengan array null.

package Ch3.J_3_10_Arrays;

public class J_3_Nol_Arrays {
    public static void main(String[] args) {
        int[] zeroArray = new int[0];
        int[] nullArray = null;

        System.out.println(zeroArray.length);
        try {
            // This code will raise NullPointerException
            System.out.println(nullArray.length);
        }
        catch (NullPointerException e){
            System.out.println(e.getMessage());
        }
    }
}   
Output
0
Cannot read the array length because "nullArray" is null

Accessing Array Elements

Element dari array memiliki index dimulai dari angka 0 hingga panjang dari array dikurangi 1, Setelah array dibuat, kita dapat mengisi elemen dengan nlai menggunakan perulangan.

Code

package Ch3.J_3_10_Arrays;

public class J_4_For_Loop_Init_Element {
    public static void main(String[] args) {

        int[] values = new int[100];

        for (int i = 0 ; i < values.length ; i++){
            values[i] = (i+1) * 2;
        }

        System.out.println("Values 1 : "+values[0]);
        System.out.println("Values 30 : "+values[29]);
        System.out.println("Values 70 : "+values[69]);
        System.out.println("Values 100 : "+values[99]);
    }
}
Output
Values 1 : 2
Values 30 : 60
Values 70 : 140
Values 100 : 200

Ketika kita membuat array dengan nilai angka int maka semua element diinisiasi dengan nilai 0 (zero). Array boolean diinisiasi dengan nilai false. dan array dengan tipe object dinisiasi dengan nilai #!null, yang mengindikasi bahwa mereka belum menyimpan objek apapun.

Code

package Ch3.J_3_10_Arrays;

public class J_5_Array_String_Empty {
    public static void main(String[] args) {
        String[] values = new String[3];

        for (String value : values){
            System.out.println("Value : "+value);
        }
    }
}
Output
Value : null
Value : null
Value : null
package Ch3.J_3_10_Arrays;

public class J_5_Array_Boolean_Zero {
    public static void main(String[] args) {
        boolean[] values = new boolean[3];

        for (boolean value : values){
            System.out.println("Value : "+value);
        }
    }
}
Output
Value : false
Value : false
Value : false
package Ch3.J_3_10_Arrays;

public class J_5_Array_Int_Zero {
    public static void main(String[] args) {
        int[] values = new int[3];

        for (int value : values){
            System.out.println("Value : "+value);
        }
    }
}
Output
Value : 0
Value : 0
Value : 0

Kita dapat menggunakan property length untuk mengambil panjang dari sebuah array. Katakan kita ingin membuat sebuah array dengna niai String namun dengan nilai bawaanya adalah string kosong, kita dapat menginisiasi dengna nilai kosong menggunakan for loop atau menggunakan static method Arrays.fill().

Code

package Ch3.J_3_10_Arrays;

import java.util.Arrays;

public class J_6_String_With_Empt_String {
    public static void main(String[] args) {
        String[] emptyString = new String[4];

        for (int i = 0;  i < emptyString.length ; i++) emptyString[i]= "";

        for (String data : emptyString){
            System.out.println("The value of element : "+data + "<-");
        }

        Arrays.fill(emptyString,"Now there is a value");

        for (String data : emptyString){
            System.out.println("The value of element2 : "+data + " <-");
        }
    }
}
Output
The value of element : <-
The value of element : <-
The value of element : <-
The value of element : <-
The value of element2 : Now there is a value<-
The value of element2 : Now there is a value<-
The value of element2 : Now there is a value<-
The value of element2 : Now there is a value<-

Copying an Array

Kita dapat membuat variabel baru dan menyalin variable array yang sudah ada. Namun variabel baru tersebut akan memiliki array dengan refrence yang sama. Denga demikain, merubah element pada array yang lama akan merefleksikan kepada variable baru.

Code

package Ch3.J_3_10_Arrays;

public class J_7_Duplicate_Instead_Of_Copy {

    public static void main(String[] args) {

        String[] names = {"Satu","Tiga","Tiga","Empat"};

        String[] namesNew = names;

        // Change the elemet on variable names
        names[1] = "Dua";

        System.out.println("Element ke-2 namesNew : "+namesNew[1]);
    }
}
Output
Element ke-2 namesNew : Dua

Jika kita ingin murni menyalin hanya nilai dari array, bukan ke refrencenya, maka kita dapat meng gunakan static method Arrays.copyOf(). Method tersebut membutuhkan dua buah argumen, pertama adalah array yang ingin kita salin dan kedua adalah panjang dari array yang disalin. Jika parameter kedua lebih panjang dibandingkan dengan panjang dari array pada paremeter pertama, maka Java akan mengisinya dengan default value sesuai dengan tipe data array tersebut.

Code

package Ch3.J_3_10_Arrays;

import java.util.Arrays;

public class J_7_Copy_Arrays {

    public static void main(String[] args) {

        String[] names = {"Satu","Tiga","Tiga","Empat"};

        String[] namesNew = Arrays.copyOf(names,names.length);

        // Change the elemet on variable names
        names[1] = "Dua";

        System.out.println("Element ke-2 namesNew : "+namesNew[1]);
    }
}
Output
Element ke-2 namesNew : Tiga

Command-Line Paramters

Setiap java program memiliki main method. Method tersebut menerima argumen dalam bentuk Array String. Parameter tersebut menampung argumen yang diberikan saat kita menjalankan java program yang menggunakan argumen.

Code

package Ch3.J_3_10_Arrays;

public class J_8_Command_Line_Parameter {
    public static void main(String[] args) {
        System.out.println("Hy this is the value you given : ");
        for (String value : args){
            System.out.println(value);
        }
    }
}

argumen pada CLI

Output
Hy this is the value you given : 
--name
Farras
--gender
male

Multidimensional Array

Code

package Ch3.J_3_10_Arrays;

public class J_9_Multidementional_Array {
    public static void main(String[] args) {


        int[] layer1 = {1,3,5,7,9};
        int[] layer2 = {2,4,6,8,10};
        int[] layer3 = {3,5,7,9,11};
        int[] layer4 = {4,6,8,10,12};
        int[][] allLayer = {layer1,layer2,layer3,layer4};

        for (int[] deepLayer : allLayer){
            System.out.println("------------");
            for (int element : deepLayer){
                System.out.print("|"+element);
            }
            System.out.println("|");
        }
    }
}
Output
------------
|1|3|5|7|9|
------------
|2|4|6|8|10|
------------
|3|5|7|9|11|
------------
|4|6|8|10|12|

Java juga menyediakan static method Arrays.deepToString() untuk menampilkan dimensional array dalam bentuk String.

Code

package Ch3.J_3_10_Arrays;

import java.util.Arrays;

public class J_9_Multidimentional_Array_DeepToString {
    public static void main(String[] args) {

        int[] layer1 = {1,3,5,7,9};
        int[] layer2 = {2,4,6,8,10};
        int[] layer3 = {3,5,7,9,11};
        int[] layer4 = {4,6,8,10,12};
        int[][] allLayer = {layer1,layer2,layer3,layer4};

        System.out.println(Arrays.deepToString(allLayer));
    }
}
Output
[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [3, 5, 7, 9, 11], [4, 6, 8, 10, 12]]

Latihan

Code

Buatlah sebuah kode yang menampilkan hasil **Ouput** dibawah ini berdasarkan data yang diberikan **Input**

``` title="Input"
[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [3, 5, 7, 9, 11], [4, 6, 8, 10, 12]]
```
```{.java title="Output"}
1 
2  4 
3  5  7 
4  6  8  10 
```
J_9_Playin_With_Array_of_Array.java
package Ch3.J_3_10_Arrays;

public class J_9_Playin_With_Array_of_Array {

    public static void main(String[] args) {

        int[] layer1 = {1,3,5,7,9};
        int[] layer2 = {2,4,6,8,10};
        int[] layer3 = {3,5,7,9,11};
        int[] layer4 = {4,6,8,10,12};
        int[][] allLayer = {layer1,layer2,layer3,layer4};

        for (int i  = 0 ; i < allLayer.length ; i++){
            for (int j = 0 ; j <= i ; j++){
                System.out.print(" "+allLayer[i][j]+" ");
            }
            System.out.println("");
        }
    }
}