Saturday, 29 September 2012

Algoritma Sorting Nama Absen

Berikut program implementasi Algoritma Sotring nama, yang akan bekerja dengan algoritma sebagai berikut :

  • Membaca input dari keyboard untuk index;
  • Program akan meminta inputan nama sesuai dengan index yang kita masukkan sebelumnya;
  • Semua data yang telah diinput akan disorting;
  • Program akan menampilkan hasil sortingnya;
  • Program akan menampilkan jumlah siswa yang kita input;
  • Program akan menampilkan Nama absen siswa teratas;
  • Program akan menampilkan Nama absen siswa terbawah.

Berikut kode program yang harus ditulis


Sort_Nama.java

package sort_nama;

//import package Bufferreader dan InputStreamReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

/**
 *
 * @author nadin
 */
public class Sort_Nama {
public static void main(String[] args) throws Exception
            
    {
        BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
        //berfungsi untuk menginstansiasi class BufferedReader menjadi objek kata
        System.out.print("Jumlah nama yang akan diinput : ");
        int idx = Integer.parseInt(inp.readLine());
        //membaca input dari keyboard

        String [] data = new String[idx]; //instansiasi, mendeklarasikan data bertype String, dan itu merupakan array.
        //panjang arraynya yaitu adalah idx, dimana idx merupakan nilai yang telah kita input sebelumnya
        String temp; //mendeklarasikan variabel temp bertype String
        Scanner input = new Scanner(System.in);

        for(int i=0;i<idx;i++) //pengulangan untuk memasukkan nama sebanyak idx
        {
            System.out.print("Nama " +(i+1)+" adalah: ");
            data[i]=input.next(); //membaca input dari keyboard
        }

        for(int x=1;x<idx;x++) //mengulang selama nilai i lebih kecil dari idx
        { 
            for(int y=0;y<x;y++)
            { 
                if(data[y].compareTo(data[y+1])>0) 
                { 
                    temp=data[y]; //menginisialisasi temp (temporary data), nilainya yaitu sama dengan data[y]
                    data[y]=data[y+1]; //insisialisasi bahwa data pada index y nilainya akan menjadi data pada index y+1
                    data[y+1]=temp; //inisilasiasi bahwa data berindex y+1 nilainya akan menjadi nilai variabel temp
                } 
            } 
        }
            System.out.println("");
            System.out.println("Urutan Absen :");

        for(int i=0;i<idx;i++) //diulang selama i lebih kecil dari nilai idx
        {
            System.out.println((i+1)+". "+ data[i]); //menampilkan nomor urut dan urutan input yang telah disorting
        }
        
        System.out.println("\nJumlah Siswa : " + idx);
        System.out.println("Absen teratas : " + data[0]); //menampilkan absen teratas
        System.out.println("Absen terbawah : " + data[idx-1]); //menampilkan absen terbawah
    }
}

  
Output dari program :


Download source code disini.

Program "Piramida Satu"

Program ini merupakan implementasi dari struktur kontrol pengulangan for. Yang dimana dalam program ini kita akan membuat piramida penjumlahan angka 1.

Algoritma Program :

  • Program meminta user menginputkan sebuah data bertype integer;
  • Data tersebut adalah menjadi acuan berapa baris piramida yang akan dioutputkan, dan program akan mencetak output, sekaligus menjumlahkannya.

Program memanfaatkan satu package (contoh : piramida_satu), dan satu class (Piramida_satu.java)

Berikut source code yang harus ditulis:


Piramida_satu.java

package piramida_satu;
import java.util.Scanner; //import package untuk membaca input dari keyboard

/**
 *
 * @author nadin
 */
public class Piramida_satu {
    public static void main(String[] args) {
        System.out.print("Masukkan jumlah bilangan : ");
        
        Scanner input = new Scanner(System.in);
        //instansiasi class Scanner menjadi variabel bernama input
        int idx = input.nextInt(); //input untuk menentukkan berapa banyaknya baris yang akan menjadi output
        
        for(int hasil=1; hasil<=idx; hasil++) //akan terus diulang sampai variabel hasil bernilai sama dengan variabel idx(yg diinputkan)
        {
            System.out.print("1");
            for(int i=1; i<hasil ; i++){
                //kembali melakukan pengulangan, kali ini yang ditampilkan adalah '+1', akan berhenti apabila i yang telah diinisialisasi bernilai sama dengan, atau lebih besar dari variabel 'hasil' (yang mana, nilai dari variabel hasil didapatkan dari for sebelumnya)
                System.out.print("+1");
            }
            System.out.println("="+hasil); // menampilkan hasil dari deretan angka satu yang berderet
        }
    }
}


Output dari program :

Download source code disini.

Program Implementasi Algoritma Sorting (Insertion Sort)

Berikut merupakan program implementasi dari ALGORITMA SORTING - Insertion Sort yang akan bekerja dengan algoritma :

  • Membaca input dari keyboard;
  • Memberikan pilihan Y atau T, jika user menginputkan Y, maka akan kembali membaca input, jika yang diinputkan adalah T, maka membaca input dari keyboard akan berhenti;
  • Semua bilangan yang diinput akan disorting;
  • Bilangan yang dimasukkan akan diseleksi bilangan terkecilnya, dan ditampilkan;
  • Bilangan yang dimasukkan akan diseleksi bilangan terbesarnya, dan ditampilkan;
  • Dari semua bilangan yang telah diinputkan, dihitung rata-ratanya, dan ditampilkan

Program ini memanfaatkan satu package (dalam Project ini, package bernama studikasus_algo) dan dua buah class (dalam Project ini, class masing-masing bernama StudiKasus_Algo.java dan Select.java)

Berikut souce code yang harus ditulis dari program tersebut;


StudiKasus_Algo.java

package studikasus_algo; //Studi kasus 22 September 2012 INSERTION SORT

import java.util.Scanner; //import untuk input dari keyboard

/**
 *
 * @author nadin
 */
public class StudiKasus_Algo {
    
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int input[] = new int[100], index = 0;
        //deklarasi 
        String ulang; //berfungsi untuk menanyakan pada user, 
        
        for (int i = 0; i < input.length; i++) {
            
            System.out.print("Masukkan angka ke "+(i+1)+" : ");
            input[i] = in.nextInt();
            //membaca input dari keyboard, dan dimasukkan dalam array input
            
            System.out.print("     (?) Masukkan lagi?(Y/T)");
            ulang = in.next();
            if (ulang.equals("Y")) {
                //for akan diteruskan jika yang diinput adalah Y
                continue;}
              if (ulang.equals("T")){
                  //jika yang diinput adalah T, maka akan keluar dari looping
                  break;
            }}
        
        input = Select.insertionsort(input); //memanggil method untuk insertion sorting
        
        System.out.println("\nBILANGAN TERKECIL\t: " + input[index]);
        int u = 99;
        for(u=99; input[u]==0; u--)
        //pengulan ini berfungsi untuk menjumlahkan seluruh nilai yang ada pada array input[]
        {
            continue; //meneruskan pada seleksi for berikutnya
        }
        System.out.println("BILANGAN TERBESAR\t: "+input[u]);
        
        double ave = 0; //menginisialisasi ave (rata-rata) dengan nilai 0, type double
        
        for (int i=0; input[i]!=0; i++) 
        {
            if(input[i] != 0){
            ave = ave + input[i]; // 
            index++;}
        }
       ave = ave / index; //menghitung ave dengan cara membagi nilai pada variabel ave dengan 
       System.out.println("Rata-Rata\t\t: " + ave); //menampilkan nilai variabel ave 
    }
}



Select.java

package studikasus_algo;

/**
 *
 * @author nadin
 */
public class Select {

    public static int[] insertionsort(int[] data) {
        for (int i = 0; i < data.length && data[i] != 0; i++) {
            int j = i, tmp = data[i];
            while ((j > 0) && (data[j - 1] > tmp)) {
                data[j] = data[j - 1];
                j--;
            }
            data[j] = tmp;
        }
        return data;
    }
}


Output dari Program :

Download source code disini.

Sunday, 2 September 2012

Membuat Kalkulator Sederhana

Kali ini kita akan membuat sebuah kalkulator sederhana, tetapi belum berbasis GUI (Graphic User Interface).


Masalah :
Berikut masalah yang harus kita selesaikan
Buatlah sebuah program dengan menggunakan bahasa java dengan  algoritma dan ketentuan berikut ini

Program Kalkulator Sederhana
Tools yang digunakan : Teks Editor (Notepad, Wordpad, Notepad++, Komodo, etc)




Penyelesaian :
Membuat class bernama kalkulator_simple.java

package kalkulator_console;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 * @author nadin
 */
public class kalkulator_simple {
    public static void main(String[] args) {
        BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
        //mendeklarasikan sebuah variabel bernama dataIn dengan tipe class BufferedReader

        String in = ""; //in akan menjadi variabel inputan dari keyboard
        
        try{
            System.out.println("Masukkan ekspresi : ");
            in = dataIn.readLine(); //menjalankan perintah dataIn.readLine() untuk mengambil inout dari user dan memasukkannya pada variabel bernama in
                                      
            }catch(IOException e){
                System.out.print("gagal membaca keyboard!");
            }

        String all[] = in.split(" "); //untuk memisahkan String in berdasarkan spasi
        String var[] = new String[3]; //membatasi jumlah angka yang akan dihitung, hanya 3
        String op[] = new String[2]; //membatasi jumlah operator, hanya boleh 2
       
        double vardou[] = new double[3]; // dari string ke double
        int idxvar = 0; //hasil jumlah angka
        int idxop = 0 ; //hasil jumlah op

        for(int i =0;i<all.length;i++) //looping sebanyak index char dari hasil castingnya dari String
        {
            if((all[i].equals("+")) || (all[i].equals("-")) || (all[i].equals("*")) || (all[i].equals("/")))
                //menyeleksi mana yang termasuk ke dalam operator
        {
            op[idxop] = all[i];
            idxop++;
        }
            else //yang tidak termasuk operator, char tersebut masuk dalam var
        {
            var[idxvar] = all[i];
            idxvar++;
        }
        }
            double hasil = 0; //mendeklarasikan variable hasil type data double dan menginisialisasinya dengan 0

       
        for(int k=0;k<var.length;k++) //looping sebanyak jumlah var (jumlah var telah diseleksi pada looping sebelumnya)
        {
            vardou[k] = Double.parseDouble(var[k]); //untuk mengubah variabel var dari String menjadi double
        }

        hasil = vardou[0]; //mengganti nilai variabel hasil jadi nilai variabel vardou index 0

        int idxvardou = 1; //inisialisasi idxvardou
       
        for(int l =0 ; l < op.length;l++) //looping sebanyak jumlah op
        {
            if(op[l].equals("+")) //membandingkan array char op dengan operator +
            {
            hasil = hasil + vardou[idxvardou]; //mengganti nilai hasil menjadi hasil ditambah dengan vardou pada idxvardou
            }
                else if (op[l].equals("-"))
                {
                hasil = hasil - vardou[idxvardou];
                }
                    else if (op[l].equals("*"))
                    {
                    hasil = hasil * vardou[idxvardou];    
                    }
                        else if (op[l].equals("/"))
                        {
                        hasil = hasil / vardou[idxvardou];    
                        }
            idxvardou++; //menambahkan indexvardou (indexnya) karena akan masuk ke looping kembali.
        }
       
        System.out.println("\nOutput");
        System.out.println(hasil);

    }
}



Saat dirunning, hasilnya seperti ini

Output Program


Download file .class
Download file .jar




Wednesday, 29 August 2012

Program Menyeleksi, dan Menjumlahkan Banyaknya Bilangan Positif dan Negatif


Masalah :

Berikut Permasalahan yang harus kita selesaikan

Buatlah sebuah program dengan menggunakan bahasa java dengan  algoritma dan ketentuan berikut ini, 

Program Menentukan Jumlah Bilangan Positif dan Negatif

Tools yang digunakan : Teks Editor (Notepad, Wordpad, Notepad++, Komodo, etc)



Algoritma Program

*****



Penyelesaian :



Pertama, buka text editor yang akan kita gunakan, disini saya menggunakan NetBeans 7.1

Buatlah sebuah Project Baru, dengan nama disesuaikan, misalnya : TugasHariRaya

Kemudian buatlah Package baru, misalnya : positif_negatif



Dalam program ini terdapat dua buah class, menggunakan class library untuk dapat membaca input dari keyboard, menggunakan struktur kontrol Conditional (if-else), Struktur Looping (for).





Positif_Negatif.java


package positif_negatif;

/**
 *
 * @author nadin
 */
import java.util.Scanner; /*import class library bernama java.util.Scanner
 *                          untuk input dari keyboard menggunakan
 *                          fasilitas Scanner*/

public class Positif_Negatif { //Positif_Negatif adalah nama dari class java
    int negatif=0, positif=0, index, bilangan;
    /*deklarasi variabel bernama negatif, dan positif, dan menginisialisasi
    * keduanya masing-masing dengan nilai 0. Deklarasi index, dan bilangan
    * tanpa inisialisasi*/
   
    public int InputBilangan(){ //method accessor / function               
        Scanner input = new Scanner(System.in); //membuat objek scanner
        index = input.nextInt(); //meminta nilai dari keyboard
        return index; //nilai kembalian dari index
        
    }
   
    public void Proses(int index){
        Scanner input2 = new Scanner(System.in);
       
    for(int i=0; i< index;i++) //looping sebanyak yang diinputkan user
        {  
            //isi statement
            System.out.print("Bilangan ke "+(i+1)+" : ");
            bilangan = input2.nextInt();
        
            //struktur conditional if-else
            if (bilangan>0) //boolean expression 1
               positif++; /*statement - nilai variabel positif akan bertambah
                           1 jika user menginput angka lebih besar dari 0*/
            else   
                if (bilangan<0) //boolean expression 2
            negatif++; //nilai variabel positif akan bertambah 1 jika user menginput angka lebih besar dari 0

        }
   
       System.out.println("\nOutput");
       System.out.println("Jumlah Bilangan Positif : "+positif); //mencetak berapa jumlah bilangan positif dari semua yang telah diinput user
       System.out.println("Jumlah Bilangan Negatif : "+negatif); //mencetak berapa jumlah bilangan negatif dari semua yang telah diinput user
   
       
    }
}



Positif_NegatifTest.java


package positif_negatif;
/**
 *
 * @author nadin
 */

public class Positif_NegatifTest {
    public static void main(String[] args) {
   
    System.out.print("Jumlah bilangan yang akan dimasukkan : ");

    Positif_Negatif run = new Positif_Negatif(); //instansiasi class GanjilGenap menjadi objek run
  
    run.Proses(run.InputBilangan());
    
    /*menjalankan method InputBilangan yang di dalamnya membaca inputan user,
    Lalu masuk ke dalam method Proses
   
    Atau sama saja dengan baris code di bawah ini :
   
    run.InputBilangan();
    mulai = run.InputBilangan(); //untuk memanggil method Proses*/
   
    }
}



Kemudian run pada class Positif_NegatifTest.java
dan hasilnya akan seperti ini :



output program

Selamat Mencoba, Semoga Berhasil kaka :-)

Catatan : 
Bila user memberi input 0 (nol), maka 0 tidak akan akan masuk pada Bilangan Positif, dan tidak juga termasuk Bilangan Negatif.
Karena Bilangan Bulat terdiri dari Bilangan Positif, 0, dan Bilangan Negatif. 0 tidak termasuk dalam keduanya.


Silahkan Download file .class
Silahkan Download file .jar


Posting ini ditujukan untuk memenuhi salah satu tugas Mata Pelajaran Productive.
Mohon koreksinya bila ada kesalahan :)

Sunday, 26 August 2012

Pengenalan Pemrograman Berorientasi Obyek


OOP (Object Oriented Programming) berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya.

Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Coba perhatikan tabel dibawah ini sebagai contoh perbandingan 

Contoh Objek dalam Kehidupan Nyata

Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. 
Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak.

Sumber : J.E.N.I
:

Teknik Pengamanan JAVA

Java juga menyediakan beragam teknik pengamanan lain :


  • Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan pointer merupakan langkah besar pengamanan. Java tidak mengenal operasi pointer. Di tangan programmer handal, operasi pointer merupakan hal yang luar biasa untuk optimasi dan pembuatan program yang efisien serta mengagumkan. Namun mode ini dapat menjadi petaka di hadapan programmer jahat. Pointer merupakan sarana luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan operasi pointer, Java dapat menjadi bahasa yang lebih aman.

  • Java memiliki beberapa pengaman terhadap applet. Untuk mencegah program bertindak mengganggu media penyimpanan, maka applet tidak diperbolehkan melakukan open, read ataupun write terhadap berkas secara sembarangan. Karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai permintaan keterangan username dan password.

Fitur-fitur dari JAVA

Java Virtual Machine (JVM)


JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi
diselesaikan oleh JVM.

Aplikasi program Java diciptakan dengan file teks berekstensi .java. Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana kompilasi
ditujukan, sementara bytecode berjalan pada java interpreter yang tersedia di semua platform sistem komputer dan sistem operasi.


Garbage Collection


Banyak bahasa pemrogaman lain yang mengijinkan seorang programmer mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa lainnya, adalah programmer yang mutlak bertanggung jawab akan hal ini. Hal ini dapat menyulitkan bilamana programmer tersebut alpa untuk mengembalikan blok memori sehingga menyebabkan situasi yang dikenal dengan nama memory leaks. Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek–objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh programmer dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.
Garbage Collection dapat diartikan juga sebagai teknik yang digunakan java untuk menangani objek yang sudah tidak diperlukan lagi


Code Security


Code Security terimplementasi pada Java melalui penggunaan Java Runtime Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code.


  • Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter. Proses ini menyediakan pengamanan dengan memisahkan kelas– kelas yang berasal dari local disk dengan kelas–kelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelas–kelas yang berasal dari local disk yang dimuat terlebih dahulu.



  • Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan–aturan dasar bahasa Java.  



  • Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing.
Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi.


Sumber Referensi :
J.E.N.I
lecturer.ukdw.ac.id






Modifier

Penggunaan modifier berfungsi untuk melakukan enkapsulasi (membungkus data) pada objeck. Dengan menggunakan modifier kita dapat menentukan siapa saja yang boleh menggunakan atau mengakses member dari suatu objek.

Modifier diletakkan pada anatomi kelas, sifatnya optional, digunakan berdasarkan kebutuhan.

Modifier menunjukkan sifatsifat tertentu dari : kelasnya, methodnya, atau attributenya. Maka dari itu, modifier memberi dampak tertentu pada kelas, interface,metode, dan variabel.

Ada beberapa keyword yang digunakan sebagai modifier dan dikelompokkan menjadi :

Java modifier terbagi menjadi kelompok berikut :
  • Modifier ketampakan/Visiblity modifier/Modifier pengaksesan/Access modifier) berlaku untuk kelas,interface, metode, dan variabel yaitu default, public, protected, private.
  • Final modifier berlaku untuk kelas, variabel, dan metode, yaitu final.
  • Static modifier berlaku untuk variabel dan metode, yaitu static.
  • Abstract modifier berlaku untuk kelas, dan metode, yaitu abstract.
  • Synchronized modifier berlaku untuk metode, yaitu synchronized.
  • Native modifier berlaku untuk metode, yaitu native.
  • Storage modifier berlaku untuk variabel, yaitu transient.


***

Access Modifier
Modifier akses digunakan untuk membatasi akses class lain terhadap suatu bagian dari class.
(attributes, methods, ataupun class itu sendiri)

Ada 4 macam modifier akses:
1. default (bisa diakses oleh anaknya dan semua yang satu package/satu folder.)
Modifier default menspesifikasikan kelas-kelas sepaket yang mengakses. Tidak ada keyword khusus untuk mendeklarasikan default access modifier, bila tidak ada access modifier pada deklarasi variabel atau metode berartimodifier yang digunakan adalah default modifier.

Jika tidak disebutkan akses modifiernya berarti default, sifatnya:
– Dapat diakses pada kelas itu
– Dapat diakses pada kelas yang sama pada paket
(package/directory) yang sama


2. public (umum, bisa dipakai siapa saja.)
Modifier public menspesifikasikan variabel dan metode yang dapat diakses oleh siapa pun, baik di dalam atau di luarkelas. Hal ini berarti anggota  public tampak dan dapat diakses oleh sembarang objek lain.

3. protected (hanya bisa diakses oleh anakanaknya)
Modifier protected menspesifikasikan anggota hanya dapat diakses metode-metode di kelas itu dan subkelas-subkelas turunan kelas itu. Ini berarti anggota protected hanya terbatas pada kelas itu dan subkelas-subkelasnya.

4. private (hanya bisa diakses class tersebut)
Modifier private adalah paling terbatas karena menspesifikasikan anggota kelas hanya dapat diakses oleh kelas di mana anggota itu didefinisikan. Ini berarti tidak ada kelas lain yang dapat mengakses anggota private, sekalipun subkelasnya.

***

Final Modifier
Modifier final berarti konstan / tetap dan tidak dapat dimodifikasi (diubah). Variabel final harus diinisialisasi saat dideklarasikan. Apabila diterapkan pada metode berarti metode tidak dapat ditimpa. Metode yang diberi modifier finaltidak dapat lagi diperluas dan ditimpa (override) di subkelas-subkelasnya. Modifier final berarti anggota kelas itu versi akhir (final version).
Variabel final serupa dengan variabel const di C++. Variabel ini harus selalu telah diinisialisasi saat deklarasi dan selanjutnya nilainya tidak dapat diubah.

Untuk membuat sebuah variabel menjadi konstanta.
• Jika modifier final diberikan pada suatu class, maka class tersebut tidak bisa diturunkan/diwariskan.
• Jika diberikan pada suatu method, maka method tersebut tidak bisa diturunkan ke
anaknya

***

Static Modifier
Modifier static berarti variabel diasosiasikan dengan kelas dan dipakai bersama objek-objek kelas itu. Variabel staticdisebut variabel kelas (class variable). Kita memanggilnya pada kelas bukan pada satu objek.

Serupa dengan data statis, kita juga membuat metode yang hanya bertindak pada kelas, jadi hanya dapat mengaksesvariabel static saja bukan data instan tertentu. Kita mendeklarasikan dengan memberi modifier static.

Terdapat kebutuhan variabel atau metode yang common (dipakai bersama) untuk semua objek tertentu. Modifier static menspesifikasikan bahwa variabel atau metode sama untuk semua objek kelas itu. Metode atau variabel yang memiliki modifier static adalah milik kelas. Metode static hanya dapat mengakses variabel statis. Metode nonstatis dapat mengakses variabel instan dan variabel static . Metode kelas (class method, yaitu dengan modifier statis) hanya diizinkan mengakses variabel static . Metode static adalah final.

Metode static yang public yang dapat diakses tanpa perlu menciptakan instan kelas. Metode System.out.println ()adalah static, sehingga dapat dipanggil tanpa diinisialisasi objek System. Variabel out adalah anggota static kelasSystem, akibatnya untuk mengaksesnya kita tidak perlu melakukan inisialisasi objek out

Modifier static digunakan untuk membuat sebuah method/attribute bisa diakses tanpa
melakukan instansiasi terlebih dulu.

• Contoh System.out.println() bersifat static artinya untuk memanggil method println() tidak harus dilakukan instansiasi dari kelas System.

• Nilai attribute yang static akan sama untuk semua objek.

• Kelebihan:
– Mudah digunakan
– Tidak perlu instansiasi obyek
– Dapat digunakan bersamasama dengan obyek lain

• Kekurangan:
– Boros memory
– Tidak bersifat private untuk masingmasing obyek

***

Abstract Modifier
Modifier abstract berarti mengidentifikasi metode yang tidak dapat dijalankan dan harus didefinisikan subkelas tidak abstrak dari kelas yang dideklarasikan. Metode abstract tidak mempunyai badan metode, jadi langsung diakhiri dengan titik koma (;)

***

Synchronized Modifier
Modifier synchronized berarti metode harus memperoleh look di satu objek atau kelas sebelum dapat dieksekusi.Modifier synchronized untuk menspesifikasikan bahwa metode adalah thread safe. Ini berarti hanya satu jalur eksekusi yang diizinkan di metode synchronized pada satu waktu. Pada lingkungan multithread seperti Java, dimungkinkan lebih dari satu jalur eksekusi berjalan di kode yang sama. Modifier synchronized mengubah aturan ini dengan hanya mengizinkan satu pengaksesan thread tunggal pada satu saat, memaksa thread-thread lain menunggu giliran.

***

Native Modifier
Modifier native berarti metode ditulis di bahasa selain bahasa Java. Seperti pada metode abstract, badan metode diganti atau diakhiri dengan titik koma (;).

Modifier native untuk menspesifikasikan metode dengan implementasi di bahasa lain. Modifier native menginformasikan ke kompilator Java bahwa implementasi metode di file C/C++ eksternal. Hal ini menjadi alasan kenapa deklarasi metodenative terlihat berbeda dari pada metode-metode lain   , yaitu tanpa badan metode.

***

Storage Modifier
Modifier transient mengacu ke objek dan nilai primitif di Java virtual machine. Modifier ini untuk menyatakan bahwavariabel tidak menjadi sasaran serialisasi. Volatile

Modifier volatile mengacu ke objek dan nilai primitif yang dapat dimodifikasikan secara asinkron. Variabel-variabel ini diperlakukan secara spesial oleh kompilator untuk mengendalikan cara variabel-variabel itu diperbarui.


Sumber Referensi :
lecturer.ukdw.ac.id
http://sinau-java.blogspot.com
http://blog.uin-malang.ac.id