Showing posts with label tentang java.. Show all posts
Showing posts with label tentang java.. Show all posts

Thursday

Perancangan Algoritma

Pada dasarnya sebuah perangkat komputer adalah mesin yang labih, komputer hanya mengerjakan apa yang kita inginkan melalui instruksi-instruksi yang kita berikan. tanpa instruksi dari kita komputer itu hanya sebuah mesin yang tidak bisa beraktifitas dengan sendirinya.
Programmer adalah orang yang bertugas untuk menerjemahkan suatu tugas menjadi instruksi detail yang dapat dimengerti oleh komputer. Komputer hanya melakukan apa yang diperintahkan baris demi baris, tetapi komputer tidak bisa berfikir bagaimana melakukan suatu tugas seefisien mungkin.
Untuk itu programmer baru harus dilengkapi dengan cara berfikir dan peralatan yang memungkinkan mereka untuk sukses dalam menerjemahkan suatu tugas menjadi rangkaian perintah yang bisa dimengerti oleh komputer.
Program komputer itu seperti seni yang memuat suatu ide. Seorang programmer mulai dengan suatu tugas di kepalanya, misalnya menghitung sisi miring dari segitiga siku-siku. Kemudian dia akan berfikir tentang apa yang harus dilakukan untuk menyelesaikan tugas tersebut dalam bahasa manusia. Dalam hal ini misalnya, sisi miring dapat dihitung dengan mengambil akar kuadrat dari jumlah kuadrat sisi siku-sikunya. Pemecahan masalah ini kemudian diterjemahkan ke dalam bahasa pemrograman yang berupa perintah langkah demi langkah bagaimana komputer harus menyelesaikan tugas tersebut.
Perintah langkah demi langkah hingga detail ini disebut algoritma. (Secara teknis, algoritma adalah kumpulan langkah-langkah sederhana yang jelas, tidak membingungkan karena hanya ada satu cara untuk melakukan langkah sederhana tersebut, dilakukan selama kurun waktu tertentu. Kita tidak ingin program menghitung selamanya tanpa batas waktu.)
Program ditulis dalam bahasa pemgrograman tertentu. Tetapi algoritma ditulis secara umum atau generic, dalam bahasa manusia, sehingga bisa diimplementasikan menggunakan bahasa pemrograman apapun. Atau dengan kata lain, algoritma mirip seperti ide di belakang program yang akan kita tulis. Tetapi ide tersebut harus jelas, dan memuat langkah demi langkah yang sederhana.
Jadi darimana algoritma itu datang? Biasanya orang harus membuat algoritma itu. Dengan skill, latihan dan pengalaman, orang akan lebih mudah membuat suatu algoritma.
Di bagian ini akan dibahas tentang bagaimana membuat suatu algoritma. Jadi bahasa Java akan kita tinggalkan sementara. Kita akan beralih untuk berfikir secara abstrak.
Misalnya, kita memiliki suatu tugas di kepala. Salah satu cara untuk menyelesaikan tugas itu adalah menuliskan penyelesaiannya langkah demi langkah, dan dari sana kita membuat algoritma untuk menyelesaikan masalah itu. Kemudian dari setiap langkah tersebut, kita bisa membuat langkah-langkah lain yang lebih detail, sampai kita bisa menerjemahkan langkah-langkah itu ke dalam bahasa pemrograman. Metode ini disebut penghalusan bertahap (stepwise refinement), dan sifatnya top-down atau dari atas ke bawah. Sambil kita menambah detail pada setiap langkah, kita bisa mulai menuliskan algoritma dalam bentuk pseudocode (kode palsu) yang bentuknya tidak harus persis atau mengikuti suatu bahasa pemrograman. Misalnya, kita ambil contoh untuk menghitung rata-rata dari 5 bilangan. Kita bisa menuliskan pseudocode dalam bentuk berikut :
ambil input user untuk bilangan pertama
masukkan ke variabel x
ambil input user untuk bilangan kedua
tambahkan variabel x dengan bilangan kedua
ambil input user untuk bilangan ketiga
tambahkan variabel x dengan bilangan ketiga
ambil input user untuk bilangan keempat
tambahkan variabel x dengan bilangan keempat
ambil input user untuk bilangan kelima
tambahkan variabel x dengan bilangan kelima
bagi variabel x dengan 5
tampilkan hasilnya di layar
Algoritma di atas betul, tetapi terlalu banyak perulangan. Bagaimana jika bilangan yang akan dirata-ratakan ada 100? Kita bisa udah algoritma di atas dengan pseudocode yang lebih mudah dimengerti. misalnya,
while a kurang dari 5
    ambil input user untuk bilangan ke-a
    tambahkan nilai x dengan bilangan ke-a
    tambah a dengan 1
bagi variabel x dengan 5
tampilkan di layar
Sekarang, ambil input user bisa dideskripsikan lebih jauh. Kita harus memberikan pertanyaan kepada user. Dan seperti dipelajari pada bab sebelumnya, input dari user berupa String yang harus diterjemahkan ke dalam tipe data bilangan untuk bisa dikalkulasi. Pseudocode di atas dapat ditulis ulang sebagai berikut :
while a kurang dari 5
    beri pertanyaan kepada user untuk memasukkan bilangan ke-a
    ambil input user untuk bilangan ke-a
    ubah input menjadi bilangan
    tambahkan nilai x dengan bilangan ke-a
    tambah a dengan 1
bagi variabel x dengan 5
tampilkan di layar
Dan juga dari pelajaran sebelumnya, untuk mengambil input user, kita bisa dihadapkan pada permasalahan IO (input output). Selain itu kita juga harus menginisialisasi pembaca dan tempat meletakkan string sementara. Untuk itu, kita harus mengubah pseudocode nya menjadi seperti ini,
inisialisasi pembaca
inisialisasi tempat string sementara
while a kurang dari 5
    beri pertanyaan kepada user untuk memasukkan bilangan ke-a
    "coba" ambil input user untuk bilangan ke-a
        jika ada masalah keluar dari program
    ubah input menjadi bilangan
    tambahkan nilai x dengan bilangan ke-a
    tambah a dengan 1
bagi variabel x dengan 5
tampilkan di layar
Kemudian, perlu diperhatikan bahwa variabel a dan x tidak diketahui nilai awalnya oleh komputer. Bayangkan jika nilai a dan x ditentukan oleh komputer secara acak, bukan saja hasil rata-ratanya menjadi tak tentu, tetapi juga perulangannya menjadi tak menentu. Untuk itu kita harus tambahkan perintah untuk menginisialisasi a dan x dengan 0, sehingga pseudocodenya menjadi,
inisialisasi x dengan 0
inisialisasi a dengan 0
inisialisasi pembaca
inisialisasi tempat string sementara
while a kurang dari 5
    beri pertanyaan kepada user untuk memasukkan bilangan ke-a
    "coba" ambil input user untuk bilangan ke-a
        jika ada masalah keluar dari program
    ubah input menjadi bilangan
    tambahkan nilai x dengan bilangan ke-a
    tambah a dengan 1
bagi variabel x dengan 5
tampilkan di layar
Dari sini kita bisa menerjemahkan pseudocode tersebut menjadi program Java, yaitu,
double x = 0;
int a = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strbilangan = null;
 
while (a < 5) {
    System.out.print("Masukkan bilangan ke-" + a + " : ");
    try {
        strbilangan = br.readLine();
    } catch (IOException ioe) {
        System.out.println("Kesalahan IO, program berhenti");
        System.exit(1);
    }
    x = x + Double.parseDouble(strbilangan);
    a = a + 1;
}
x = x / 5;
System.out.println("Rata-rata bilangan yang dimasukkan adalah " + x);
Jangan lupa bahwa program tersebut membutuhkan paket java.io.*, sehingga kita harus menambah,
import java.io.*
di awal kelas.

Berikut ini adalah program lengkapnya dan dapat diunduh dalam bentuk zip file atau melalui SVN di alamat berikut disini
package hitungratarata5bil;
 
import java.io.*;
 
public class HitungRataRata5Bil {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  double x = 0;
  int a = 0;
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String strbilangan = null;
 
  while (a < 5) {
      System.out.print("Masukkan bilangan ke-" + a + " : ");
      try {
          strbilangan = br.readLine();
      } catch (IOException ioe) {
          System.out.println("Kesalahan IO, program berhenti");
          System.exit(1);
      }
      x = x + Double.parseDouble(strbilangan);
      a = a + 1;
  }
 
  x = x / 5;
  System.out.println("Rata-rata bilangan yang dimasukkan adalah " + x); 
 }
}

Untuk menguji program tersebut, jalankan "Run -> Run" atau Ctrl-F11. Kemudian arahkan kursor Anda ke bagian bawah dan klik di kotak yang bernama Console.
 Berikut ini adalah hasil keluarannya, Anda bisa mencoba-coba dengan bilangan apapun.

Blok, Perulangan, dan Percabangan

Kemampuan suatu program untuk melakukan tugas kompleks dilakukan dengan menggabungkan perintah sederhana menjadi struktur kontrol. Dalam bahasa Java, ada 6 struktur tersebut, yaitu blok, perulangan while, perulangan do ... while, perulangan for, pernyataan if, dan pernyataan switch.

Masing-masing struktur ini sebetulnya merupakan pernyataan tunggal yang berdiri dengan sendirinya, tetapi di dalamnya terdiri dari satu atau lebih perintah sehingga keseluruhannya menjadi suatu struktur perintah.

Blok
Blok adalah pernyataan sederhana yang dimulai dengan { dan diakhiri dengan }. Tujuannya untuk mengelompokkan beberapa perintah sehingga lebih dimengerti. Misalnya,
{
     perintah
}
Pernyataan blok biasanya terdapat dalam struktur kontrol, tetapi sebetulnya tanpa struktur kontrol pun, blok tetap berlaku. Contoh sederhana penggunaan blok ini adalah dalam subrutin main() yang kita lakukan pada contoh-contoh sebelumnya.

Berikut ini adalah 2 contoh penggunaan blok.
{
    System.out.println("Hallo");
    System.out.println("Dunia");
}
 
{ // blok ini digunakan untuk menukar isi variable x dan y
    int temp;
    temp = x;
    x = y;
    y = temp;
}
Pada blok kedua, kita mendeklarasikan variable baru temp. Dalam blok kedua ini, variabel apapun yang dideklarasikan tidak akan dapat diakses dari luar blok ini. Variabel ini disebut variabel lokal, karena hanya bisa diakses dari dalam blok.
Ketika komputer menjalankan program ini, komputer akan mempersiapkan memori untuk menyimpan variabel yang dideklarasikan di dalam blok ini. Ketika blok ini selesai dijalankan, komputer akan melepas memori yang digunakan dalam blok ini untuk digunakan oleh bagian program lain.
Konsep "scope" atau jangkauan pada konsep pemrograman, mengacu pada bisa atau tidaknya suatu variabel dilihat oleh bagian program lain. Jangkauan suatu variabel menyatakan di bagian mana variabel ini valid atau dengan kata lain bisa diakses. Jangkauan variabel dalam suatu blok terbatas hanya pada blok tersebut.
Blok sendiri sebetulnya bukan merupakan struktur kontrol. Program akan berjalan seperti biasa dari atas kebawah seperti biasa. Secara umum struktur kontrol dibagi menjadi 2 bagian, yaitu : perulangan dan percabangan.
 
Perulangan 
Sebagai contoh untuk membahas tentang perulangan, kita lihat pernyataan while, yang memiliki bentuk seperti,
while (suatu_kondisi) {
   perintah
}
Semantik pada pernyataan while tersebut adalah sebagai berikut. Ketika komputer sampai pada pernyataan while, komputer akan melakukan perhitungan pada suatu_kondisi. Apabila suatu_kondisi bernilai true, blok yang berisi perintah akan dilakukan. Setelah komputer sampai pada bagian akhir blok, komputer akan menghitung kembali suatu_kondisi. Jika masih bernilai true, maka blok tersebut akan dieksekusi, dan jika tidak, program akan melompat ke bagian program berikutnya setelah blok berakhir. Atau dengan kata lain, jika suatu_kondisi bernilai false, blok perintah tidak akan dieksekusi.
Berikut ini adalah contoh untuk menulis bilangan 1 hingga 5.
int angka = 1; // inisialisasi variabel, kita mulai dengan mengisi variabel angka dengan 1
 
while (angka <= 5) {
     System.out.println(angka); // cetak isi angka di layar
     angka = angka + 1;         // tambah angka dengan 1
}
 
System.out.println("Selesai...");
Variabel angka kita inisialiasi (persiapkan) dan kita isi mula-mula dengan 1. Ketika program sampai pada pernyataan while, program akan mengevaluasi apakah angka <= 5. Pada saat program baru dimulai, angka masih bernilai 1, sehingga pernyataan angka <= 5 bernilai true. Dalam hal ini perintah di dalam blok akan dieksekusi, yaitu mencetak angka ke layar, kemudian menambah angka dengan 1. Sekarang angka bernilai 2.
Setelah sampai pada akhir blok, program akan kembali pada awal pernyataan while. Sekarang angka bernilai 2, dan karena 2 masih kurang dari atau sama dengan 5, program akan kembali mengeksekusi perintah dalam blok. Begitu seterusnya hingga angka bernilai 6. Pada saat ini program akan berhenti melakukan perulangan dan berhenti melakukan eksekusi perintah di dalam blok tersebut, kemudian melakukan perintah berikutnya, yaitu menampilkan kata "Selesai...".

Percabangan
Pernyataan if memperintahkan komputer untuk memilih salah satu aksi yang akan dilakukan, tergantung pada suatu kondisi tertentu. Bentuknya dapat ditulis sebagai berikut,
if (suatu_kondisi)
     perintah_1;
else
     perintah_2;
Perintah_1 dan perintah_2 juga bisa berbentuk blok, sehingga pernyataan di atas dapat ditulis juga sebagai berikut,
if (suatu_kondisi) {
     perintah_1;
} else {
     perintah_2;
}
Ketika komputer sampai pada pernyataan if, komputer akan menghitung apakah suatu_kondisi bernilai true. Jika iya, maka blok perintah berikutnya akan dieksekusi, dalam hal ini perintah_1. Jika tidak, maka blok setelah pernyataan else akan dieksekusi, yaitu perintah_2.
Sebagai contoh, mari kita kembali pada contoh program untuk membalik nilai x dan y, dengan syarat x harus lebih besar dari y. Dalam hal ini, setelah program ini dieksekusi, nilai x akan selalu bernilai lebih kecil dari y, karena jika nilai x lebih besar, nilai x akan ditukar dengan nilai y.
if (x > y) { // jika x lebih besar dari y
    // blok ini digunakan untuk menukar isi variable x dan y
    int temp;
    temp = x;
    x = y;
    y = temp;
}
Contoh berikut adalah program untuk menentukan apakah suatu bilangan merupakan bilangan genap atau bilangan ganjil. Dengan menggunakan operator %, yaitu sisa pembagian, kita dapat menentukan apabila sisa pembagian suatu bilangan dengan 2 adalah 0, maka bilangan tersebut merupakan bilangan genap. Jika tidak, maka bilangan tersebut adalah bilangan ganjil.
if ((x % 2) == 0) {
    System.out.println(x + " adalah bilangan genap");
} else {
    System.out.println(x + " adalah bilangan ganjil");
}

Wednesday

INSTALASI NETBEANS


Sejarah Netbeans
Pengembangan  NetBeans  diawali  dari  Xelfi,  sebuah  proyek  mahasiswa  tahun  1997  di  bawah bimbingan Fakultas Matematika dan Fisika Universitas  Charles,  Praha.
Sebuah  perusahaan  kemudian  dibentuk  untuk  proyek  tersebut  dan  menghasilkan  versi  komersial  NetBeans  IDE  hingga  kemudian  dibeli  oleh  Sun  Microsystem  pada  tahun  1999.  Sun  kemudian  menjadikan  NetBeans  open  source  pada  bulan  Juni  tahun  2000. Sejak itu komunitas NetBeans terus berkembang.
NetBeans  mengacu  pada  dua  hal,  yakni  platform  untuk  pengembangan  aplikasi desktop  java,  dan  sebuah  Integrated Development  Environment  (IDE) yang  dibangun menggunakan platform NetBeans.
 Platform NetBeans memungkinkan aplikasi dibangun dari sekumpulan komponen  perangkat  lunak  moduler  yang  disebut  ‘modul’.  Sebuah  modul  adalah  suatu arsip  Java  (Java archive)  yang memuat kelas-kelas Java untuk berinetraksi dengan  NetBeans Open API  dan  file  manifestasi  yang  mengidentifikasinya sebagai  modul.  Aplikasi  yang dibangun  dengan  modul-modul  dapat  dikembangkan  dengan  menambahkan  modul-modul  baru.  Karena  modul  dapat dikembangkan  secara  independen,  aplikasi  berbasis platform NetBeans  dapat dengan mudah dikembangkan oleh pihak ketiga  secara mudah dan powerful.

Platform NetBeans
Platform  NetBeans  adalah  framework  yang  dapat  digunakan  kembali  (reusable) untuk  menyederhanakan  pengembangan  aplikasi  desktop.  Ketika  aplikasi berbasis platform NetBeans dijalankan, kelas Main dari platform dieksekusi. Modul-modul yang tersedia  ditempatkan  di  sebuah  registry  di  dalam  memori, dan  tugas  startup  modul dijalankan.  Secara  umum,  kode  modul  dimuatkan  ke  dalam  memori  hanya  ketika  ia diperlukan.
Aplikasi  dapat  menginstal  modul  secara  dinamis.  Aplikasi  dapat  memasukkan modul  Update  Center  untuk  mengijinkan  pengguna  aplikasi  men-download digitally-signed  upgrade  dan  fitur-fitur  baru  secara  langsung  ke  dalam  aplikasi  yang  berjalan. Penginstalan  kembali  sebuah  upgrade  atau  rilis baru  tidak  memaksa  pengguna  untuk men-download keseluruhan aplikasi lagi.
Platform  NetBeans  menawarkan  layanan-layanan  yang  umum  bagi  aplikasi desktop, mengijinkan pengembang untuk fokus ke logika yang spesifik terhadap aplikasi.
Fitur-fitur yang disediakan oleh platform NetBeans:
  • Manajemen antarmuka (misal: menu & toolbar)
  • Manajemen pengaturan pengguna
  • Manajemen penyimpanan (menyimpan dan membuka berbagai macam data)
  • Manajemen jendela
  • Wizard framework (mendukung dialog langkah demi langkah)
Sebelum menginstal Netbeans IDE 6.5.1 teman-teman harus menginstal paket Java Development Kit (JDK) terlebih dahulu. Netbeans IDE berguna untuk membangun aplikasi java (salah satunya).
Untuk File JDK dan Netbeans.exe bisa didownload di sini
Cara instalnya adalah sebagai berikut;
1. Klik 2x Installer Netbeans IDE, sehingga muncul form Configuring Installer.
Configuring Installer
2. Tunggu sampai proses konfigurasi ini selesai.
Configuring Installer
3. Pilih paket program yang akan diinstall dengan cara klik tombol Customize... (sudah diset otomatis semua paket diinstall). Klik Next.
Customize
4. Beri tanda centang pada I accept the terms in the license agreement. Klik Next.
License
5. Tentukan lokasi instalasi GlashFish (sudah diset otomatis), GlashFish berguna bagi teman-teman sewaktu menjalankan aplikasi  desktop yang teman-teman buat nantinya menggunakan web browser. Teman-teman harus perhatikan dan ingat username, password, port dan lokasi instalasi, jika perlu teman-teman catat. saja Klik Next.
GlashFish
6. Tentukan Lokasi GlashFlash v3 (sudah diset otomatis). Klik Next.
GlashFish v3
7. Pada form summary akan ditampilkan informasi mengenai instalasi Netbeans IDE yang akan dilakukan. Klik Install.
Install Netbeans IDE
8. Tunggu sampai proses instalasi selesai.
Instalasi Netbeans IDE
9. Instalasi telah sukses dilakukan. Klik Finish.
Finish 

Selamat mencoba.

Sunday

OPERATOR

Dalam bahasa pemrograman selalu ada manipuasli terhadap variabel-variabel yang kita definisikan. Manipulasi variabel dan alur program sangat ditentukan oleh OPERATOR. Operator berfungsi untuk mengoperasikan (memanipulasi, mengolah) satu atau lebih variabel. Variabel yang dioperasikan disebut operand.
Secara garis besar operator dalam java bisa dikelompokkan menjadi :

Operator Pemberi Nilai & Type Casting

Operator merupakan simbol untuk melakukan perhitungan atau suatu operasi pada satu atau lebih dari satu hal. Setelah kita mendeklarasi dan mengisi suatu variabel, kita dapat menggunakan operator untuk melakukan beberapa hal seperti penambahan, pengurangan dan sebagainya.
Operator Pemberi Nilai
= Operator pemberi nilai Operator penugasan dan pemberian nilai merupakan operator yang paling umum dalam semua bahasa pemrograman. Operator ini dilambangkan dengan "=" yang digunakan untuk memberikan nilai kepada suatu variabel di sebelah kiri operator. Jika variabel tersebut telah memiliki nilai, nilainya akan diganti dengan variabel atau angka di sebelah kanan operator.
Operator ini juga dapat digunakan untuk memberikan referensi kepada suatu objek.
Beberapa contoh :
String nama = "Budi";
boolean dewasa = true;
 
// buat objek baru
Shape s1 = new Shape(); 
 
// beri referensi s1 kepada s2
Shape s2 = s1;
 
// nilai sebelumnya diganti
dewasa = false;
Anda dapat juga memberikan nilai kepada beberapa variabel secara bersamaan. Misalnya :
x = y = z = 2;
x = (y + z);
Operator "=" dievaluasi dari kanan ke kiri. Pada ekspresi pertama, angka 2 diberikan kepada "z", kemudian nilai yang disimpan "z" diberikan kepada "y", dan kemudian "y" ke "x" secara bersamaan. Pada ekspresi kedua, nilai hasil evaluasi pertambahan dimasukkan ke variabel "x".
Pada dasarnya, kedua sisi tanda "=" harus memiliki tipe yang sama. Misalnya x = A, x dan A harus memiliki tipe yang sama. Bagaimana jika tidak, misalnya
int A;
short B;
A = 17;
B = (short)A;
Pada kode di atas, B akan mengambil nilai A yang sudah dikonversi ke tipe short. Tanda (short) dalam kurung artinya menginstruksikan Java untuk mengubah nilai A menjadi short sebelum diberikan kepada B.
Perubahan tipe ini disebut type casting. Kita bisa mengubah tipe apa saja, tetapi karena rentang tiap tipe berbeda, maka nilainya belum tentu sama dengan nilai aslinya. Misalnya (short)100000 adalah -31072.
Untuk perubahan tipe dari bilangan real (float atau double) ke bilangan bulat, Java melakukan type casting dengan memangkas desimalnya. Jadi 3.56 akan diubah menjadi 3 dalam bilangan bulat.
Nilai char juga bisa diubah ke dalam bilangan bulat, yaitu dengan menggantinya dengan bilangan Unicode-nya.
Selain operasi "=", Java juga memiliki operator pemberian nilai beruntun, dan dapat digunakan oleh semua operator aritmatika, manipulasi bit, atau pergeseran bit. Misalnya pada ekspresi berikut, nilai "x" akan dijumlahkan dengan 2, kemudian hasilnya disimpan kembali ke "x".
x += 2;
Table berikut menunjukkan semua operator pemberian nilai yang dapat Anda gunakan sehingga kode Anda menjadi lebih efisien dan mudah dibaca.
Operator Contoh Ekspresi setara
+= x += y; x = (x + y);
-= x -= y; x = (x - y);
*= x *= y; x = (x * y);
/= x /= y; x = (x / y);
%= x %= y; x = (x % y);
&= x &= y; x = (x & y);
|= x |= y; x = (x | y);
^= x ^= y; x = (x ^ y);
< <= x < <= y; x = (x < < y);
>>= x >>= y; x = (x >> y);
>>>= x >>>= y; x = (x >>> y);
Contoh kode program yang dapat Anda unduh dalam bentuk zip file, disini
package operatorpemberinilai;
 
public class OperatorPemberiNilai {
 
 /**
  * Contoh program menggunakan operator pemberi nilai (assignment operator)
  * 
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int x = 5;
  int y = 10;
 
  x += y;
  System.out.println("Hasil penjumlahan : " + x);
 
  x -= y;
  System.out.println("Hasil pengurangan : " + x);
 
  x *= y;
  System.out.println("Hasil perkalian : " + x);
 
  x /= y;
  System.out.println("Hasil pembagian : " + x);
 
  x %= y;
  System.out.println("Sisa pembagian : " + x);
 
  x &= y;
  System.out.println("Hasil operasi AND : " + x);
 
  x |= y;
  System.out.println("Hasil operasi OR : " + x);
 
  x <<= y;
  System.out.println("Hasil operasi pergeseran bit ke kiri :"+ x);
 }
}
Keluaran programnya :

Operator Pembanding, Boolean dan Kondisi

Operator kondisi (conditional operator) menghasilkan nilai true atau false tergantung dari variabelnya, dalam hal ini operasinya dilakukan pada dua operand. Operator boolean adalah operator kondisi yang kedua operandnya berupa nilai boolean (true atau false), sedangkan Operator Pembanding membandingkan 2 nilai seperti pada operasi matematika.
Catatan : Pada objek, seperti String, operasi pembanding akan membandingkan alamat memory tempat objek itu disimpan, bukan membandingkan isinya. Untuk membandingkan isi String, gunakan equals(), equalsIgnoreCase(), dan compareTo() seperti dibahas pada bagian sebelumnya.
Simbol Nama operator Contoh
== Sama dengan b = (1 == 2);
!= Tidak sama dengan b = (1 == 2);
> Lebih besar b = (1 > 2);
>= Lebih besar atau sama dengan b = (1 >= 2);
< Lebih kecil b = (1 < 2);
<= Lebih kecil atau sama dengan b = (1 <= 2);
&& Conditional AND b = true && false;
|| Conditional OR b = true || false;
! NOT b = !true;
?: Bentuk pendek dari if-then-else
Operator boolean AND
Operator kondisi AND menghasilkan "true" apabila kedua operandnya bernilai "true". Jika salah satunya atau keduanya "false", operator ini menghasilkan "false". Berikut ini tabel kebenaran operasi AND.
Op1 atau Exp1 Op2 atau Exp2 Hasil
true true true
true false false
false true false
false false false
Operator && akan mengevaluasi Op2 (di sebelah kanan) HANYA jika operand 1 bernilai "true". Seperti terlihat dari tabel di atas, apabila Op1 (di sebelah kiri) bernilai "false", hasilnya akan selalu "false" tidak tergantung pada isi dari Op2.
Operator kondisi OR
Operator kondisi OR menghasilkan "true" jika salah satu operandnya bernilai "true". Jika keduanya "false", operator ini menghasilkan "false". Berikut ini table kebenaran oeprasi OR.
Op1 atau Exp1 Op2 atau Exp2 Hasil
true true true
true false true
false true true
false false false
Operator || akan mengevaluasi Op2 (di sebelah kanan) HANYA jika operand 1 bernilai "false". Seperti terlihat dari tabel di atas, apabila Op1 (di sebelah kiri) bernilai "true", hasilnya akan selalu "true" tidak tergantung pada isi dari Op2.
Operator NOT
Operator NOT ("!") melakukan operasi boolean NOT pada operand atau ekspresi tunggal. Operator ini mengecek nilai boolean dari suatu operand atau expresi kemudian membalik nilainya (dari true ke false atau false ke true). Berikut ini adalah tabel kebenaran operator NOT.
Op1 Hasil
true false
false true
Operator Ternary (?:) Java memiliki operator berkondisi lain yang disebut ternary "?:", yang pada dasarnya merupakan bentuk pendek dari if-then-else. Secara umum
kondisi ? jika_benar : jika_salah Pada dasarnya operator "?:" akan mengevaluasi "kondisi". Apabila kondisi bernilai "true", operator akan mengembalikan "jika_benar", tetapi apabila "kondisi" bernilai "false", operator akan mengembalika "jika_salah". Misalnya
x = (1 > 2) ? 10 : 20 Dari contoh di atas, "x" akan memiliki nilai 20, karena ekspresi (1 > 2) adalah salah (atau "false").
Contoh kode program yang dapat Anda unduh dalam bentuk zip file, disini
package operatorkondisi;
 
public class OperatorKondisi {
 
 /**
  * Contoh program menggunakan operator kondisi
  * 
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
  int x = 5;
  int y = 10, angka = 0;
  boolean bl = true;
  if((x == 5) && (x < y))
   System.out.println("Nilai x adalah " + x);
 
  if((x == y) || (y > 1))
   System.out.println("Nilai y lebih besar dari x");
  angka = bl ? x : y;
 
  System.out.println("Angka yang keluar adalah " + angka);
 }
}
Berikut adalah hasil keluarannya :

Operator Tunggal

+ Operator plus; menyatakan nilai positif (setiap angka tanpa tanda ini akan dianggap sebagai positif)
- Operator minus; menyatakan nilai negatif, dapat pula digunakan untuk menegatifkan suatu bilangan
++ Operator kenaikan; menambah suatu bilangan dengan 1
-- Operator penurunan; mengurangkan suatu bilangan dengan 1
! Operator lawan; membalik nilai suatu boolean
Operator tunggal hanya membutuhkan satu operan untuk melakukan operasinya. Operator ini tidak dapat digunakan untuk variabel final, karena variabel final berupa konstanta yang tidak dapat diubah-ubah. Beberapa jenis operator tunggal diberikan pada tabel di bawah ini.
Simbol Nama operator Operasi Contoh
+ Operator plus menyatakan nilai positif
angka = +1;
- Operator minus menyatakan nilai negatif, dapat pula digunakan untuk menegatifkan suatu bilangan
angka = -1;
angka = -angka; // sekarang angka bernilai 1
++ Operator kenaikan menambah suatu bilangan dengan 1
angka = ++angka;
-- Operator penurunan mengurangkan suatu bilangan dengan 1
angka = --angka;
! Operator lawan membalik nilai suatu boolean
ok = !true;
Operator kenaikan dan penurunan dapat diletakkan di belakang atau di depan suatu variabel. Jika diletakkan di depan (++x atau --x), penambahan/pengurangan dilakukan sebelumnya, sedangkan apabila diletakkan di akhir (x++ atau x--) penambahan/pengurangan dilakukan setelahnya. Walau bagaimanapun pada akhirnya keduanya akan menghasilkan x = x+1 atau x = x-1.
Mari kita lihat contohnya untuk membedakan lebih jelas perbedaan penempatan operator tunggal ++ dan --
Contoh kode program yang dapat Anda unduh dalam bentuk zip file, disini 
package operatortunggal;
 
public class OperatorTunggal {
 
 /**
  * Contoh program menggunakan operator tunggal
  * 
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
  int x = 0;
  int y = 0;
  y = ++x;
  System.out.println("Contoh operator pada prefix (awalan)");
  System.out.println("---------------------------");
  System.out.println("Nilai x baru : " + x);
  System.out.println("Nilai y = ++x : " + y);
 
  x = 0;
  y = 0;
  y = x++;
  System.out.println("\nContoh operator pada sufix (akhiran)");
  System.out.println("---------------------------");
  System.out.println("Nilai x baru :" + x);
  System.out.println("Nilai y = x++ :" + y);
 }
}
Jalankan program tersebut dan lihat hasilnya. Apabila operator ++ diletakkan di awal (prefix), maka nilai "x" dan "y" akan sama, karena penambahan nilai "x" dilakukan terlebih dahulu, lalu hasilnya diberi kepada "y".
Apabila operator ++ diletakkan di akhir (sufix), nilai "y" adalah nilai "x" terdahulu. Java akan memberi nilai "y" dengan nilai "x" sebelum operasi ++ dilakukan. Baru kemudian nilai "x" ditambahkan.
Berikut ini adalah screenshot keluarannya :

Operator Aritmatika

+ Operator penjumlahan (juga sebagai penyambung string)
- Operator pengurangan
* Operator perkalian
/ Operator pembagian
% Operator sisa pembagian
Operator aritmatika digunakan untuk melakukan operasi matematika, seperti penambahan, pengurangan, pembagian, dan modulo (atau sisa pembagian). Contoh penggunaan :
Simbol Nama operator Contoh penggunaan
+ Operator penjumlahan n = n + 1;
- Operator pengurangan n = n - 1;
* Operator perkalian n = n * 1;
/ Operator pembagian n = n / 1;
% Operator sisa pembagian n = n % 1;
+ Operator penyambung string n = "saya "+"tidur";
Contoh kode program yang dapat Anda unduh dalam bentuk zip file, disini 
package operatoraritmatika;
 
public class OperatorAritmatika {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
   int x = 2;
   int y = 5;
   int z = 3;
   int g = 0;
 
   g = x + y;
   System.out.println("Penjumlahan (x+y) : " + g);
 
   g  = y - x;
   System.out.println("Pengurangan (y-x) : " + g);
 
   g = x * y;
   System.out.println("Perkalian (x*y) : " + g);
 
   g = y / x;
   System.out.println("Pembagian (y/x) : " + g);
 
   g = z % y;
   System.out.println("Sisa pembagian (z%x) : " + g);
 
   g = x + (y * (z/x));
   System.out.println("Hasilnya sekarang : " + g);
 }
}
Keluaran Program :

String, Objek dan Kelas Tipe Data

Bagian sebelumnya memperkenalkan 8 jenis tipe data primitif dan tipe data String. Perbedaan mendasar antara tipe primitif dan String adalah : nilai dari tipe String berupa objek. Objek akan dibahas pada bagian lain mengenai kelas (class). Di bagian ini kita akan belajar bagaimana String digunakan dan juga mempelajari konsep pemrograman penting yang lain, yaitu subrutin.
Subrutin adalah kumpulan instruksi program yang digabungkan sehingga memiliki fungsi tertentu. Dalam bahasa Java, setiap subrutin termasuk di dalam bagian suatu kelas atau objek. Java menyediakan kelas standar yang siap digunakan. Nilai tipe String adalah objek yang memiliki kumpulan subrutin yang dapat digunakan untuk memanipulasi String tersetbut. Kita bisa memanggil subrutin tersebut tanpa harus mengerti bagaimana subrutin tersebut bekerja. Sebenarnya ini adalah tujuan subrutin, yaitu sekumpulan perintah yang memiliki fungsi tertentu tanpa harus mengetahui secara detail apa yang terjadi di dalam.
Kelas terdiri dari variabel dan subrutin yang disimpan di dalamnya. Variabel dan subrutin ini disebut static member (anggota statis). Contohnya adalah pada program SelamatDatang, kelas SelamatDatang memiliki anggota main() yang merupakan anggota statis kelas itu. Anggota yang berupa static member diberi imbuhan static, seperti pada main().
Fungsi kelas yang lain adalah untuk mendeskripsikan suatu objek. Kelas di sini berfungsi seperti tipe data. Nilai yang disimpan dalam tipe data itu adalah objek. Misalnya String sebenarnya merupakan nama kelas yang disediakan bahasa Java. String juga berupa tipe data dan kalimat seperti "Selamat Datang!" adalah isi dari tipe data String.
Kegunaan kelas baik sebagai gabungan subrutin ataupun sebagai objek sering membingungkan. Misalnya kelas String juga menyimpan beberapa subrutin statik selain juga sebagai tipe data. Contoh kelas standar lainnya adalah Math yang berisi kumpulan subrutin statik untuk melakukan berbagai perhitungan matematis.

Kelas String

Nilai suatu String adalah objek. Objek ini berisi rangkaian huruf yang membentuk string. Objek tersebut juga berisi subrutin. Misalnya length adalah fungsi yang menghitung panjang suatu string, atau jumlah karakter dalam suatu string. Misalnya string str yang dideklarasikan sebagai berikut :
String str;
str = "Hari ini cerah sekali!"
Untuk menghitung jumlah karakter dalam string str, panggil fungsi str.length() yang keluarannya bertipe int. Fungsi ini tidak membutuhkan parameter. Fungsi length merupakan anggota kelas String dan dapat digunakan oleh semua data yang bertipe String. Dan juga bisa digunakan oleh literal string, misalnya program berikut menghitung jumlah karakter dalam string "Indonesia Raya" :
System.out.print("Jumlah karakter dalam \"Indonesia Raya\" adalah ");
System.out.print("Indonesia Raya".length());
System.out.println(" karakter");
Kelas String memiliki beberapa fungsi di antaranya :
  • s1.equals(s2) adalah fungsi yang mengembalikan nilai boolean (true atau false). Fungsi ini akan menghasilkan true jika s2 sama dengan s1, dan salah jika tidak. Kesamaan yang diuji adalah kesamaan persis baik kapitalnya maupun urutan huruf-hurufnya.
  • s1.equalsIgnoreCase(s2) juga menghasilkan nilai boolean yang menguji apakah string s2 sama dengan s1 dengan tidak membandingkan kapitalnya. "Kucing".equalsIgnoreCase("kucing") menghasilkan true.
  • s1.length(). Seperti diulas sebelumnya, fungsi ini menghitung jumlah karakter dalam string s1.
  • s1.charAt(N). N adalah integer (bilangan bulat). Fungsi ini mengembalikan karakter ke-N dari string s1. Karakter pertama dihitung sebagai posisi ke-0. s1.charAt(0) berarti mengambil karakter pertama, sedangkan s1.charAt(1) berarti mengambil karakter ke-2, dan seterusnya. Karakter terakhir memiliki indeks s1.length() - 1. Fungsi ini akan mengeluarkan pesan kesalahan apabila N bernilai negatif atau lebih besar dari s1.length() - 1.
  • s1.substring(N,M), di mana N dan M bilangan bulat. Fungsi ini mengambil potongan string antara karakter ke-N hingga karakter M-1. Catatan bahwa karakter ke-M tidak ikut diambil. Misalnya, "jalan layang".substring(1,4) menghasilkan "ala".
  • s1.indexOf(s2) mengembalikan nilai integer. Fungsi ini mencari string s2 di dalam string s1, dan apabila ditemukan mengembalikan posisi awal s2 di dalam s1. Jika tidak ditemukan, fungsi ini akan mengembalikan -1. Fungsi ini bisa juga digunakan untuk mencari string s2 dalam s1 setelah posisi ke-N dalam string s1. Misalnya, "kelapa muda".indexOf("a") menghasilkan 3, sedangkan "kelapa muda".indexOf("a",6) menghasilkan 10.
  • s1.compareTo(s2) membandingkan s2 dan s1. Jika s1 dan s2 sama, hasilnya 0. Jika s1 kurang dari s2, hasilnya bilangan negatif , dan jika s1 lebih besar dari s2, hasilnya bilangan positif. "Kurang dari" atau "lebih dari" mengacu pada urutannya dalam abjad jika keduanya huruf kecil atau keduanya huruf besar. Jika kapitalnya berbeda, perbandingannya bergantung pada nilai ASCII-nya.
  • s1.toUpperCase() adalah fungsi untuk mengubah seluruh huruf dalam s1 menjadi huruf besar.
  • s1.toLowerCase() berfungsi untuk mengubah huruf dalam s1 menjadi hurug kecil.
  • s1.trim() adalah berfungsi menghapus karakter yang tak bisa dicetak, misalnya spasi, baris baru, enter, yang ada sebelum atau sesudah suatu kalimat. Misalnya "  selamat pagi bu  ".trim() menghasilkan "selamat pagi bu".
Untuk s1.toUpperCase(), s1.toLowerCase(), s1.trim() nilai s1 tidak berubah. Fungsi ini melakukan perhitungan kemudian mengembalikan string baru hasil perhitungan tersebut.
Kita bisa juga menggunakan tanda + menyambung 2 string. Misalnya "mata" + "hari" menjadi "matahari". Nilai yang dapat disambungkan bukan hanya string dan string, tetapi juga string dan angka, misalnya "jalan" + 2 menjadi "jalan2".

Contoh Kelas String

Kelas Math

Kelas Math memiliki banyak fungsi statik. Beberapa yang penting di antaranya:
  • Math.abs(x), menghitung nilai mutlak (absolut) dari x. Nilai mutlak bilangan negatif adalah bilangan positif, dan bilangan positif tetap bilangan positif.
  • Fungsi trigonometri Math.sin(x), Math.cos(x), and Math.tan(x). (Untuk semua fungsi trigonometri, sudut memiliki satuan radian, bukan derajat)
  • Fungsi trigonometri inverse, yang mencari sudut dari suatu nilai trigonometric, kebalikan dari fungsi trigonometri, seperti arcus sin, arcus cos, dan arcus tangen. Math.asin(x), Math.acos(x), and Math.atan(x).
  • Math.exp(x), menghitung pangkat dari bilangan natural e, atau ex. Dan logaritma natural loge x atau ln x bisa dihitung dengan menggunakan fungsi Math.log(x).
  • Math.pow(x,y) menghitung xy atau x pangkat y
  • Math.floor(x) menghitung pembulatan ke bawah dari suatu bilangan riil, misalnya 3.84 akan dibulatkan ke bawah menjadi 3.0
  • Math.random() memilih bilangan acak di antara 0.0 dan 1.0. Komputer memiliki algoritma perhitungan tertentu yang hasilnya bilangan acak (meskipun bulan bilangan yang betul-betul acak, tetapi cukup untuk kebanyakan fungsi)
Paremeter (nilai di dalam kurung) fungsi-fungsi di atas bisa bertipe numerik apa saja (misalnya double, int, dll), tetapi keluarannya bertipe double, kecuali abs(x) yang tipe keluarannya sama dengan tipe parameternya.
Math.random() tidak memiliki parameter, tetapi tanda kurungnya harus tetap ditulis untuk membedakan fungsi dan variabel. Contoh fungsi lain yang tidak memiliki parameter adalah System.currentTimeMillis() yang berguna untuk mengambil waktu saat ini dalam satuan milidetik, dihitung sejak 1 Januri 1970 waktu GMT. Satu milidetik sama dengan 1 per 1000 detik. Keluarannya bertipe long.
Untuk menghitung waktu yang diperlukan untuk menjalankan suatu perintah, jalankan fungsi System.currentTimeMillis() sebelum dan sesudah suatu instruksi dijalankan. Perbedaannya adalah waktu yang diperlukan untuk menjalankan suatu instruksi.

Contoh Kelas Math

Kelas sebagai kumpulan subrutin dan variabel statik

Selain sebagai tipe data, kelas System juga memiliki subrutin statik yang bernama exit. Memanggil System.exit akan menghentikan jalannya program, dan digunakan apabila karena suatu hal (misalnya program telah selesai atau adanya error) program harus dihentikan. Subrutin exit menerima parameter bilangan bulat, misalnya System.exit(0) atau System.exit(1), untuk memberitahu kepada sistem operasi alasan kenapa program dihentikan. Status 0 berarti program berhenti normal tanpa adanya error, sedangkan status lain berarti ada sesuatu yang salah yang terjadi di tengah eksekusi program tersebut.
Setiap subrutin melakukan fungsi tertentu. Beberapa di antaranya melakukan perhitungan lalu melaporkan hasil perhitungannya. Ada juga yang berfungsi untuk mengambil data dari tempat tertentu dan melaporkan data yang didapat. Subrutin jenis ini disebut function (fungsi). Fungsi adalah subrutin yang mengembalikan (return) suatu nilai. Nilai yang dikembalikan akan digunakan lebih lanjut dalam program.
Sebagai contoh adalah fungsi untuk menghitung akar kuadrat dari suatu bilangan. Java memiliki fungsi seperti itu yang disebut Math.sqrt. Fungsi ini merupakan anggota statik dari kelas yang bernama Math. Jika x adalah suatu bilangan, makan Math.sqrt(x) menghitung akar kuadrat dari x dan mengembalikan hasil perhitungannya. Karena Math.sqrt(x) mengembalikan suatu bilangan, kita tidak bisa memanggil fungsi ini seperti
Math.sqrt(x); // Tidak masuk akal!
Kita tentunya ingin menggunakan hasilnya untuk instruksi selanjutnya, misalnya menuliskan hasilnya di layar seperti
System.out.print( Math.sqrt(x) );  // Menampilkan akar kuadrat x di layar.
atau menyimpan hasilnya pada variabel lain, seperti
panjangDiagonal = Math.sqrt(x);