Headline

Collection

Primitive vs Object
·         Tipe primitive tidak menurunkan sifat dari Objek
·         Tipe primitive adalah tipe yang hanya mengandung tipe data dasar
·         Dapat diproses dengan cepat karena merupakan data dasar
·         Dapat di encapsulate (dibungkus) di dalam objek dengan menggunakan wrapper classes
o   Class integer tipe primitive int
o   Class double tipe primitive double
o   Class char tipe primitive char
·         Tipe primitive harus encapsulate terlebih dahulu sebelum digunakan di dalam struktur data tersebut (boxing)
Boxing dan unboxing
·         Proses boxing dan unboxing dapat dilakukan secara otomatis
·         Autoboxing:

Integer objInt = 50;

                        Statement diatas memerintahkan penyimpanan nilai 50 sebagai objek
·         Unboxing:

Int i = objInt;

Pengambilan nilai tipe data integer dari objek objInt
Generic Method
·         Dapat dipanggil dengan argument tipe yang berbeda
·         Dapat bersifat static maupun nonstatic
·         Menyediakan cara yang mudah saat overloaded methods melakukan proses yang sama
·         Penggunaan sintaksnya harus memiliki type parameter section ditandai dengan angle brackets sebelum return
·         Contoh:
o public static void print(E[] arg){...}
o   private   boolean isInside(T t, V[] v){...} //harus bertipe sama dengan T atau subclass dari T
·         hanya tipe data reference yang dapat digunakan dalam generic methods
·         generic berarti beroperasi di dalam tipe parameter

Collection (superclass)
·         collection merupakan struktur data yang berarti suatu objek yang menyimpan reference ke objek lain
·         reference tersebut dikenal sebagai elemennya sama halnya seperti elemen pada array
list digunakan pada saat data yang diinginkan membolehkan adanya duplikasi data
map digunakan untuk mekanisme yang membutuhkan key-value
set berguna pada data yang tidak mengijinkan adanya duplikasi

Exception

Exception
Saat kita menggunakan array dengan index melebihi kapasitas array yang kita buat,  maka program akan mendapatkan suatu error runtime dengan info ArrayIndexOutOfBoundsException. Atau dengan contoh lain semisal kita membuat aplikasi penjumlahan (aritmatika) dengan proses pembagian integer 3 / 0 maka program akan menampilkan pesan error berikut:
Exception in thread "main" java.lang.ArithmeticException: / by zero
Pada bahasa pemrograman java, setiap error runtime disebabkan oleh eksepsi. Eksepsi berfungsi untuk memanipulasi suatu error atau kondisi tertentu agar program tetap dapat berjalan normal tanpa harus keluar dari program tersebut.
Contoh program aritmatika berikut:

import java.util.Scanner;
public class Eksepsi {
   public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);

   System.out.print("Masukkan angka pertama : ");
   int bil1 = sc.nextInt();
   System.out.print("Masukkan angka kedua : ");
   int bil2 = sc.nextInt();

   System.out.println(bil1 + " / " + bil2 + " = " + (bil1 / bil2));
   }
}
Jika kita menginputkan bilangan integer 10 dan 2 maka output yang dihasilkan seperti berikut
¼¼§ÏMasukkan angka pertama : 10
¼¼§ÏMasukkan angka kedua : 2
ÏϧÏ10 / 2 = 5
tetapi jika kita menginputkan bilangan integer dengan pembagi 0 maka terjadi error berikut
¼¼§ÏMasukkan angka pertama : 3
¼¼§ÏMasukkan angka kedua : 0
ÏϧÏException in thread "main" java.lang.ArithmeticException: / by zero
ÏϧÏat ArithmeticException.main(ArithmeticException.java:11)
Anda mungkin bisa menggunakan perintah if untuk mengatasinya program tersebut. Jika kita ubah contoh tadi kurang-lebih akan seperti ini
import java.util.Scanner;
public class Eksepsi {
   public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);

   System.out.print("Masukkan angka pertama : ");
   int bil1 = sc.nextInt();
   System.out.print("Masukkan angka kedua : ");
   int bil2 = sc.nextInt();

   if (bil2 != 0)
      System.out.println(bil1 + " / " + bil2 + " = " +(bil1 / bil2));
   else System.out.println("Bilangan kedua tidak boleh nol!");
   }
}
maka saat program dijalankan dengan inputan pembagi 0
¼¼§ÏMasukkan angka pertama : 3
¼¼§ÏMasukkan angka kedua : 0
ÏϧÏBilangan kedua tidak boleh nol!
Jika penerapannya penanganan error ini menggunakan exception, maka code contohnya di modifikasi menjadi seperti ini
import java.util.Scanner;
public class Eksepsi {
   public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);

   System.out.print("Masukkan angka pertama : ");
   int bil1 = sc.nextInt();
   System.out.print("Masukkan angka kedua : ");
   int bil2 = sc.nextInt();

   try{
      if (bil2 == 0)
         throw new ArithmeticException();

      System.out.println(bil1 + " / " + bil2 + " = " + (bil1/bil2));
        }
   catch (ArithmeticException e){
      System.out.println("Error = bilangan tidak dapat dibagi nol!");
   }
   System.out.println("Masih dalam program");
   }
}
Jika kita coba program ini dengan pembagi 0
¼¼§ÏMasukkan angka pertama : 8
¼¼§ÏMasukkan angka kedua : 0
ÏϧÏError = bilangan tidak dapat dibagi nol!
ÏϧÏMasih dalam program
Lihat perintah  System.out.println("Masih dalam program");

Ternyata statement tersebut masih dijalankan oleh program. Artinya meskipun terdapat error pada saat menjalankan program, tetapi program tidak langsung keluar dan masih bisa menjalankan perintah berikutnya secara normal. Berbeda dengan contoh paling awal

Advanced Class Features

Static keyword
Keyword static berguna untuk membuat variabel bisa juga method baik itu fungsi (method yang menghasilkan return) atau prosedur (method yang tidak memberikan return atau nilai balik). Selain dari itu, penggunaan method static akan membuat object yang kita buat memiliki nilai yang sama, berbeda dengan instance variable yang dapat berbeda-beda nilainya pada setiap objek. Umumnya untuk menggunakan isi dari class yang berbeda, maka harus membuat objek kelas tersebut terlebih dahulu. Namun dengan keyword static, maka kita dapat mengakses isi kelas tersebut tanpa harus membuat objek terlebih dahulu
untuk lebih jelasnya, berikut contoh program tanpa menggunakan keyword static
class Static{
    int x,y,hasil;
    int jumlah(){
        hasil = x + y;         
    return hasil;
    }
}
 
public class DemoStatic{
    public static void main(String args[]){
        Static objStatic = new Static();         
        objStatic.x = 4;
        objStatic.y = 5;         
        System.out.println("Hasil penjumlahan : "+objStatic.jumlah());
    }
}

Sekarang kita coba bandingkan dengan code berikut yang merupakan hasil dari modifikasi contoh code diatas
class Static{
    static int x,y,hasil;
    static int jumlah(){
        hasil = x + y;        
    return hasil;
    }
}
 
public class DemoStatic{
    public static void main(String args[]){
        //Static objStatic = new Static();         
       Static.x = 4;
       Static.y = 5;         
       System.out.println("Hasil penjumlahan : "+Static.jumlah());
    }
}
Untuk catatan, kelas diatas tidak dapat menggunakan keyword ‘this’ karena sifatnya yang static sehingga program akan menampilkan error 
Final Keyword
Penggunaan keyword Final digunakan untuk pendeklarasian yang konstan, artinya nilai yang telah di deklarasikan bersifat absolut karena tidak perlu adanya perubahan nilai pada penggunaan kedepannya. Penggunaan final dapat diimplementasikan pada variabel, metod, dan kelas.
Contoh penggunaan final pada variabel
contoh yang sering digunakan yaitu pada saat pendeklarasian nilai PI
class Lingkaran {
  final double PI = 3.14;
  final int KUADRAT = 2;
}

Contoh penggunaan final pada class
final class Kampus {

}

Artinya kelas Kampus diatas tidak bisa diturunkan (extends)

Contoh penggunaan final pada metode
class Kampus {
  final void tampil() {
   System.out.println(“I LOVE JAVA”)
  }
}

      Artinya metode diatas tidak dapat di overide maupun diturunkan
Super Keyword
Subclass dapat memanggil constructor secara eksplisit dari superclass tepat diatasnya (superclass pertama diatasnya). Untuk itu digunakan keyword ‘super’. Selain itu keyword ‘super’ juga dapat digunakan untuk mengakses anggota dari superkelas layaknya referensi ‘this’
Contoh kelas
public Mahasiswa(){ 
 super( "Joko", "1412008" ); 
}

Contoh mengakses anggota kelas
public Mahasiswa(){
   super.nama = “Joko”;
   super.noPokok = “1412008”; 
}

Sering terjadi error saat kita menggunakan keywor ‘final’ ini. Sekedar catatan untuk mengatasinya, penggunaan ‘super’ haruslah berada di pernyataan pertama dalam konstruktor. Pemanggil super hanya dapat digunakan pada definisi konstruktor. Pemanggilan ‘this’ pada konstruktor yang juga digunakan untuk pemanggilan ‘super’ akan terjadi error

Popular Tags

ati-zone