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]);
}
}
Kita juga dapat menggunakan shorcut sehingga dengan satu baris kode kita dapat membuat variabel array dan menginisiasi dengan nilai.
Code
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());
}
}
}
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]);
}
}
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
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 + " <-");
}
}
}
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]);
}
}
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]);
}
}
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
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("|");
}
}
}
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));
}
}
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("");
}
}
}