OOP Java 04 Array & String
Pokok Bahasan Reference Array String
Reference Seperti kita ketahui ada 8 tipe primitif di java : boolean, char, byte, short, int, long, float dan double. Semua tipe selain tipe primitif adalah Objek, diantaranya : array dan string. Variabel yg menunjuk pada objek disebut reference variables Passing parameter pada method untuk semua tipe data di java selalu by value, kecuali pada tipe data object digunakan by reference Method dapat menerima parameter berupa objek, juga dapat mengembalikan (return) sebuah objek
Array (1) Mengapa kita membutuhkan array ? c: tanpa array import java.util.Random; public class Ratarata { public static void main(String[] args) { Random rnd = new Random(); int bil1, bil2, bil3, bil4, bil5; float rata; bil1 = Math.abs(rnd.nextInt()) % 100 + 1; bil2 = Math.abs(rnd.nextInt()) % 100 + 1; bil3 = Math.abs(rnd.nextInt()) % 100 + 1; bil4 = Math.abs(rnd.nextInt()) % 100 + 1; bil5 = Math.abs(rnd.nextInt()) % 100 + 1; System.out.println(bil1+" "+bil2+" "+bil3+" "+bil4+" "+bil5); rata = (float) (bil1 + bil2 + bil3 + bil4 + bil5)/5; System.out.println("Rata-rata : " + rata); }
Array (2) c: dengan array import java.util.Random; public class Ratarata2 { public static void main(String[] args) { Random rnd = new Random(); int[] bil = new int[5]; float rata; int c; rata = 0; for (c=0; c<5; c++) { bil[c] = Math.abs(rnd.nextInt()) % 100 + 1; System.out.print(bil[c] + " "); rata = rata + bil[c]; } rata = rata / 5; System.out.println("\nRata-rata bilangan : " + rata);
Array (3) Bagaimana jika terdapat 100 data ? Dengan menggunakan array program menjadi lebih ringkas dan mudah dimaintain. Array : kumpulan data bertipe sama. Kita dapat membuat array untuk semua tipe, baik primitif, maupun kelas/objek. Contoh deklarasi array : int[] one, two, three; int four[], five[][], six; Mahasiswa[] mhs;
Array (4) Dari contoh diatas : one, two, three & four merupakan array 1 dimensi five merupakan array 2 dimensi six bukan merupakan array Cara pertama lebih dianjurkan karena tidak bercampur antara variabel array, bukan array & array dengan dimensi berbeda Deklarasi array belum menunjukkan ukurannya.
Array (5) Contoh instansiasi array : one = new int[5]; four = new int[100]; Mengapa instansiasi array menggunakan operator new? Indeks array dimulai dari 0 s/d n-1 Inisialisasi (pemberian nilai) array : one[0] = 30; one[3] = 20; Deklarasi, instansiasi dan inisialisasi dapat digabung dengan cara : int[] two = new int[3]; //deklarasi & instansiasi int[] one = {30, 10, 15, 20, 70}; //+inisialisasi
Array (6) Array untuk objek dapat dibuat dg cara yg sama : 1 Mahasiswa[] mhs; 2 mhs = new Mahasiswa[30]; 3 for (c=0; c<30; c++) 4 mhs[c] = new Mahasiswa(); Baris 1 & 2 hanya membuat array dari reference variabel, sehingga objeknya sendiri harus dibuat kemudian (baris 4).
Array (7) Contoh array dengan dimensi lebih dari satu : int[][] five = new int[3][2]; int[] duaD = new int[3][]; duaD[0] = new int[15]; duaD[1] = new int[12]; duaD[2] = new int[20]; Seperti contoh diatas, array dalam java tidak harus berbentuk segi empat. Contoh dengan inisialisasi langsung : int[][] duaD = {{1,2}, {4,3}, {5,6}}; //3x2
Array (8) Array memiliki atribut length yg menyimpan panjang array : int[] one = {7,5,2,4,9,3,4}; n = one.length; Mulai J2SE 5.0 terdapat cara baru untuk mempermudah iterasi terhadap array : for (int element : one) System.out.println(element);
Array (9) Ukuran array tidak dapat diubah, tetapi reference variabelnya dapat dipakai untuk menunjuk ke array baru : int[] arrKu = new int[5]; arrKu = new int[10]; (dlm contoh diatas array pertama ‘hilang’) Kelas System menyediakan method untuk mengcopy isi array : int[] source = {1, 2, 3}; int[] dest = {7, 6, 5, 4, 3, 2, 1}; System.arraycopy(source, 0, dest, 0, source.length); Isi array source mulai indeks 0, akan dicopy ke dest mulai indeks 0, sebesar ukuran array source, hasilnya {1, 2, 3, 4, 3, 2, 1}
String (1) String merupakan kelas khusus di Java, tetapi instansiasi string tidak perlu menggunakan operator new. c: String s = “Hello World”; String str; str = “Ini string saya”; String merupakan sebuah kelas, dan di dalamnya terdapat beberapa method, misalnya: s.length() --> panjang string s.substring(0, 2) --> mengembalikan “He” (karakter ke 0 sampai ke-2 [bukan sampai dengan])
String (2) Selain memiliki method, string juga memiliki operator “+” String s = “Banyaknya “+ 2; /*konversi “2”*/ int z = 4; String s = “Ada “ + z + “ buah “; String s = 5; /*tidak boleh */ Catatan: Literal string merupakan instans dari objek string: “Hello”.length() menghasilkan 5
String (3) Escape sequence String merupakan serangkaian karakter diawali \ (backslash) untuk mengetikkan karakter khusus : \n : newline \t : karakter tab \\ : backslash \” : double quote \' : single quote (apostrophe) \udddd: karakter dalam unicode dddd adalah digit heksadesimal (0-9, A-F)
String (4) Sifat Immutable String : string sebenarnya immutable (tidak bisa diubah), dalam : String a = “hello”; a = a + “ world”; Sebuah objek baru diciptakan, objek lama dibuang (untuk dipungut oleh garbage collector) a menunjuk ke objek yang baru
String (5) Operator perbandingan (==) nilai primitif membandingkan nilai Operator == terhadap reference membandingkan reference (bukan isi objek) Method .equals() digunakan untuk membandingkan isi objek (termasuk juga string) String a = “Hello”; String b = “World”; if (a.equals(b)) { }
String (6) String yang dapat diubah (mutable) juga tersedia di java yaitu StringBuffer, contoh : StringBuffer str = new StringBufer(“Hallo”); StringBuffer str2 = null; str2 = new StringBuffer(“Siapa namamu ?”); StringBuffer str3 = null; str3 = str2; Beberapa method dari kelas StringBuffer : append insert charAt setCharAt reverse replace delete
Berlatihlah membuat program yang menggunakan array & String Berlatihlah membuat program yang menggunakan array & String ! Practice Leads to Mastery