Proyek Java dimulai tahun 1991 oleh James Gosling, bernama Oak, diubah menjadi Green, akhirnya menjadi Java yang terinspirasi dari asal kopi yang diminum dari Pulau Jawa, sehingga logo Java bentuknya seperti secangkir kopi, Java versi pertama (1.0) dirilis pada tahun 1996 dan terus berkembang sampai JAVA SE 15 tahun 2020, Java merupakan bahasa pemrograman yang dikembangkan dari bahasa C yang menggunakan paradigma OOP (Object Oriented Programming)
untuk menjalankan program JAVA diperlukan JVM (Java Virtual Machine) yang merupakan mesin virtual untuk menjalankan program Java, adapun proses yang dilakukan saat coding java antara lain :
- Menulis kode program Java, menghasilkan file dengan nama
Program.java
- Melakukan Compile, file
Program.java
kemudian di-compiledengan compiler (javac
) dan akan menghasilkan fileProgram.class
- Menjalankan Program,file
Program.class
merupakan file yang berisi bytecode yang akan dieksekusi oleh JVM, sehingga program berjalan
Peralatan yang dibutuhkan untuk coding Java antara lain :
- JDK (Java Development Kit), berisi Compiler, JVM, Library, dan lain-lain. silahkan download di https://jdk.java.net/
- Teks Editor untuk menulis program, seperti CVS, silahkan download di https://code.visualstudio.com/
- NetBeans, merupakan IDE (Integrated Development Environment) yang umum digunakan dalam pemrograman Java dan melakukan compile di sana tanpa harus mengetik manual dari CMD, silahkan download di https://netbeans.apache.org/front/main/index.html
Struktur program Java secara umum dibagi menjadi 4 bagian, yaitu :
- Deklarasi Package, merupakan sebuah folder yang berisi sekumpulan program Java, dilakukan saat membuat program atau aplikasi, nama package mengikuti nama domain yang mengeluarkan program, penulisan nama domain dibalik, lalu diikuti nama programnya, misalnya : package id.my.trie.program;
- Impor Library, merupakan sekumpulan class dan fungsi yang bisa kita gunakan dalam membuat program, misalnya : import java.util.Scanner;
- Bagian Class, setiap program harus dibungkus di dalam class agar nanti bisa dibuat menjadi objek, Blok class dibuka dengan tanda kurung kurawal
{
kemudian ditutup atau diakhiri dengan }, yang diisi dengan method atau fungsi-fungsi dan juga variabel, misalnya :class NamaProgram { public static void main(String args[]){ System.out.println("Hello World"); } }
- Method Main, atau fungsi
main()
merupakan blok program yang akan dieksekusi pertama kali, dan wajib dibuat agar bisa dieksekusi, Methodmain()
memiliki parameterargs[]
. Parameter ini nanti akan menyimpan sebuah nilai dari argumen di command line, misalnya :public static void main(String args[]){ System.out.println("Hello World"); }
Aturan Penulisan Sintaks Java, meliputi :
- Case Sensitive, artinya huruf besar atau kapital dan huruf kecil dibedakan,Gaya penulisan case (case style) yang digunakan oleh Java adalah :
- camelCase, misalnya : String namaSaya = “Dian”;
- PascalCase, misalnya :
class HelloWOrld {
//...
}
- ALL UPPER, misalnya : public final String DB_NAME = “petanikode”;
- String, merupakan kumpulan dari karakter, penulisannya :
- Tanda petik ganda (
"..."
) untuk membuat string, misalnya “Hello world” - Tanda petik tunggal (
'...'
) untuk membuat karakter, misalnya ‘Hello world’
- Tanda petik ganda (
- Komentar, merupakan bagian program yang tidak akan dieksekusi oleh komputer, digunakan untuk : Memberi keterangan pada kode program; Menonaktifkan fungsi tertentu; Membuat dokumentasi. Penulisannya menggunakan : Garis miring ganda (
//
) untuk komentar satu baris; Garis miring bintang (/*...*/
) untuk komentar yang lebih dari satu baris. Contoh :public static void main(String args[]){ // ini adalah komentar satu baris System.out.println("Hello World"); // komentar akan diabaikan oleh komputer // berikut ini fungsi yang di-non-aktifkan dengan komentar // System.out.println("Hello World"); /* Ini adalah penulisan komentar yang lebih dari satu baris */ }
- Blok program, merupakan kumpulan dari statement dan ekspresi yang dibungkus menjadi satu, dibuka dengan kurung kurawal
{
dan ditutup dengan }, Contohnya :// blok program main public static void main(String args[]){ System.out.println("Hello World"); System.out.println("Hello Kode"); // blok program if if( true ){ System.out.println('True'); } // blok program for for ( int i = 0; i<10; i++){ System.out.println("Perulangan ke"+i); } }
- Statement dan ekspresi, merupakan bagian terkecil dalam program, diakhiri dengan titik koma (
;
), Contohnya :System.out.println("Apa kabar?"); var x = 3; var y = 8; var z = x +
y;
JAVA menyediakan fungsi untuk membuat program, antara lain :
- Fungsi Input, dibedakan menjadi 2 kelompok, yaitu teks dan GUI, yang meliputi class :
- Class Scanner, merupakan class yang menyediakan fungsi-fungsi untuk mengambil input dari keyboard, misalnya :
// mengimpor Scanner ke program import java.util.Scanner; public class DataKaryawan { public static void main(String[] args) { // deklarasi variabel String nama, alamat; int usia, gaji; // membuat scanner baru Scanner keyboard = new Scanner(System.in); // Tampilkan output ke user System.out.println("### Pendataan Karyawan PT. Petani Kode ###"); System.out.print("Nama karyawan: "); // menggunakan scanner dan menyimpan apa yang diketik di variabel nama nama = keyboard.nextLine(); // Tampilkan outpu lagi System.out.print("Alamat: "); // menggunakan scanner lagi alamat = keyboard.nextLine(); System.out.print("Usia: "); usia = keyboard.nextInt(); System.out.print("Gaji: "); gaji = keyboard.nextInt();
- Class BufferReader, digunakan untuk membaca input dari keyboard, file dan jaringan, yang terletak di dalam paket
java.io, misalnya :
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ContohBufferReader { public static void main(String[] args) throws IOException { String nama; // Membuat objek inputstream InputStreamReader isr = new InputStreamReader(System.in); // membuat objek bufferreader BufferedReader br = new BufferedReader(isr); // Mengisi variabel nama dengan Bufferreader System.out.print("Inputkan nama: "); nama = br.readLine(); // tampilkan output isi variabel nama System.out.println("Nama kamu adalah " + nama); } }
- Class Console, hanya bisa digunakan di lingkungan console saja, seperti Terminal dan CMD, misalnya :
import java.io.Console; public class InputConsole { public static void main(String[] args) { String nama; int usia; // membuat objek console Console con = System.console(); // mengisi variabel nama dan usia dengan console System.out.print("Inputkan nama: "); nama = con.readLine(); System.out.print("Inputkan usia: "); usia = Integer.parseInt(con.readLine()); // menampilkan isi variabel nama dan usia System.out.println("Nama kamu adalah: " + nama); System.out.println("Saat ini berusia " + usia + " tahun"); } }
- Class Scanner, merupakan class yang menyediakan fungsi-fungsi untuk mengambil input dari keyboard, misalnya :
- Fungsi Output, untuk menampilkan input, yang terdiri dari beberapa fungsi, antara lain :
- Fungsi
System.out.print(), akan menampilkan teks apa adanya, misalnya :
public static void main(String[] args) { System.out.print("ini teks yang dicetak dengan print()"); }
- Fungsi
System.out.println(), akan menampilkan teks dengan ditambah baris baru, misalnya :
public static void main(String[] args) { System.out.println("sedangkan ini teks yang dicetak dengan println()"); }
- Fungsi
System.out.format(), untuk menggabungkan String yang lebih kompleks, misalnya :
public class FormatString { public static void main(String[] args) { String namaDepan = "Petani"; String namaBelakang = "Kode"; System.out.format("Nama saya %s %s %n", namaDepan, namaBelakang); } }
- Fungsi
Variabel dan tipe data pada JAVA meliputi :
- Tipe data pada Java, terdiri dari :
char
: Tipe data karakter, contohZ
int
: angka atau bilangan bulat, contoh29
float
: bilangan desimal, contoh2.1
double
: bilangan desimal juga, tapi lebih besar kapasitasnya, contoh2.1
String
: kumpulan dari karakter yang membentuk teks, contohHello World!
boolean
: tipe data yang hanya bernilaitrue
danfalse
- Aturan yang harus diikuti dalam penulisan variabel, antara lain :
- Nama variabel tidak boleh menggunakan kata kunci dari Java (reserved word) seperti
if
,for
,switch
, dll. - Nama variabel boleh menggunakan huruf, angka (0-9), garis bawah (underscore), dan symbol dollar ($), namun penggunaan garis bawah dan symbol lebih baik dihindari.
- Nama variabel harus diawali dengan huruf kecil, karena Java menggunakan gaya CamelCase.
- Apabila nama variabel lebih dari 1 suku kata, maka kata ke-2 dituliskan dengan diawali dengan huruf besar dan seterusnya, contoh
namaVariabel
- Nama variabel tidak boleh menggunakan kata kunci dari Java (reserved word) seperti
- Konversi, mengubah type data ke jenis yang lain
Ada enam jenis kelompok operator dalam pemrograman Java, yaitu :
- Operator Aritmatika, digunakan untuk melakukan operasi aritmatika, terdiri dari : penjumlahan (+), pengurangan (-), perkalian (*), pembagian (\), sisa bagi (%), misalnya :
import java.util.Scanner; public class OperatorAritmatika { public static void main(String[] args) { int angka1; int angka2; int hasil; Scanner keyboard = new Scanner(System.in); System.out.print("Input angka-1: "); angka1 = keyboard.nextInt(); System.out.print("Input angka-2: "); angka2 = keyboard.nextInt(); // penjumlahan hasil = angka1 + angka2; System.out.println("Hasil = " + hasil); System.out.print("Input angka-1: "); angka1 = keyboard.nextInt(); System.out.print("Input angka-2: "); angka2 = keyboard.nextInt(); // pengurangan hasil = angka1 - angka2; System.out.println("Hasil = " + hasil); System.out.print("Input angka-1: "); angka1 = keyboard.nextInt(); System.out.print("Input angka-2: "); angka2 = keyboard.nextInt(); // perkalian hasil = angka1 * angka2; System.out.println("Hasil = " + hasil); System.out.print("Input angka-1: "); angka1 = keyboard.nextInt(); System.out.print("Input angka-2: "); angka2 = keyboard.nextInt(); // Pembagian hasil = angka1 / angka2; System.out.println("Hasil = " + hasil); System.out.print("Input angka-1: "); angka1 = keyboard.nextInt(); System.out.print("Input angka-2: "); angka2 = keyboard.nextInt(); // Sisa Bagi hasil = angka1 % angka2; System.out.println("Hasil = " + hasil); } }
- Operator Penugasan (Assignment Operator), fungsinya untuk memberikan tugas pada variabel tertentu, biasanya untuk mengisi nilai, terdiri dari : pengisian nilai (=), isi penjumlahan (+=), isi pengurangan (-=), isi perkalian (*=), isi pembagian (\=), isi sisa bagi (%=), misalnya :
public class OperatorPenugasan { public static void main(String[] args) { int a; int b; // Pengisian nilai a = 5; b = 10; // penambahan b += a; // sekarang b = 15 System.out.println("Penambahan : " + b); // pengurangan b -= a; // sekarang b = 10 (karena 15-5) System.out.println("Pengurangan : " + b); // perkalian b *= a; // sekarang b = 50 (karena 10*5) System.out.println("Perkalian : " + b); // Pembagian b /= a; // sekarang b=10 System.out.println("Pembagian : " + b); // Sisa bagi b %= a; // sekarang b=0 System.out.println("Sisa Bagi: " + b); } }
- Operator Pembanding, dikenal dengan operator relasi, nilai yang dihasilkan dari operator ini berupa boolean, yaitu :
true
danfalse, terdiri dari : lebih besar (>), lebih kecil (<), sama dengan (==), tidak sama dengan (!=), lebih besar sama dengan (>=),lebih kecil sama dengan (<=), misalnya :
public class OperatorPembanding { public static void main(String[] args) { int nilaiA = 12; int nilaiB = 4; boolean hasil; // apakah A lebih besar dari B? hasil = nilaiA > nilaiB; System.out.println(hasil); // apakah A lebih kecil dari B? hasil = nilaiA < nilaiB; System.out.println(hasil); // apakah A lebih besar sama dengan B? hasil = nilaiA >= nilaiB; System.out.println(hasil); // apakah A lebih kecil sama dengan B? hasil = nilaiA <= nilaiB; System.out.println(hasil); // apakah nilai A sama dengan B? hasil = nilaiA == nilaiB; System.out.println(hasil); // apakah nilai A tidak sama dengan B? hasil = nilaiA != nilaiB; System.out.println(hasil); } }
- Operator Logika, digunakan untuk membuat operasi logika, terdiri dari : and (&&), or (||), negasi (!)
- Operator Bitwise, digunakan untuk operasi bit (biner) berlaku untuk tipe data
int
,long
,short
,char
, danbyte
terdiri dari : AND (&), OR (|), negasi (~), XOR (^), Left Shift (<<), Right Shift (>>), Left Shift unsigned (<<<), Right Shift unsigned (>>>), - Operator Ternary, seperti membuat pertanyaan, simbolnya menggunakan tanda tanya (
?
) dan titik-dua (:
) untuk memisah jawabannya, misalnya :public class OperatorTernary { public static void main(String[] args) { boolean suka = true; String jawaban; // menggunakan operator ternary jawaban = suka ? "iya" : "tidak"; // menampilkan jawaban System.out.println(jawaban); } }
Percabanagan dalam JAVA ada 3 jenis, yaitu :
- Percabangan IF, hanya memiliki satu pilihan, hanya akan dikerjakan kalau kondisinya benar, misalnya :
import java.util.Scanner; public class Hadiah { public static void main(String[] args) { // membuat variabel belanja dan scanner int belanja = 0; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Total Belanjaan: Rp "); belanja = scan.nextInt(); // cek apakah dia belanja di atas 100000 if ( belanja > 100000 ) { System.out.println("Selamat, anda mendapatkan hadiah!"); } System.out.println("Terima kasih..."); } }
- Percabangan IF/ELSE, memiliki pilihan alternatif kalau kondisinya salah, misalnya :
import java.util.Scanner; public class CekKelulusan { public static void main(String[] args) { // membuat variabel dan Scanner int nilai; String nama; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Nama: "); nama = scan.nextLine(); System.out.print("Nilai: "); nilai = scan.nextInt(); // cek apakah dia lulus atau tidak if( nilai >= 70 ) { System.out.println("Selemat " + nama + ", anda lulus!"); } else { System.out.println("Maaf " + nama + ", anda gagal"); } } }
- Percabangan IF/ELSE/IF atau SWITCH/CASE, memiliki lebih dari dua pilihan, misalnya :
import java.util.Scanner; public class HitungGrade { public static void main(String[] args) { // membuat variabel dan scanner int nilai; String grade; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Inputkan nilai: "); nilai = scan.nextInt(); // tentukan grade-nya if ( nilai >= 90 ) { grade = "A"; } else if ( nilai >= 80 ){ grade = "B+"; } else if ( nilai >= 70 ){ grade = "B"; } else if ( nilai >= 60 ){ grade = "C+"; } else if ( nilai >= 50 ){ grade = "C"; } else if ( nilai >= 40 ){ grade = "D"; } else { grade = "E"; } // cetak hasilnya System.out.println("Grade: " + grade); } } atau :
import java.util.Scanner; public class LampuLalulintas { public static void main(String[] args) { // membuat variabel dan Scanner String lampu; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Inputkan nama warna: "); lampu = scan.nextLine(); switch(lampu){ case "merah": System.out.println("Lampu merah, berhenti!"); break; case "kuning": System.out.println("Lampu kuning, harap hati-hati!"); break; case "hijau": System.out.println("Lampu hijau, silakan jalan!"); break; default: System.out.println("Warna lampu salah!"); } } }
- Percabangan dalam Percabangan (Nested), atau sering disebut nested if, misalnya :
import java.util.Scanner; public class Kasir { public static void main(String[] args) { // deklarasi variabel dan Scanner int belanjaan, diskon, bayar; String kartu; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Apakah ada kartu member: "); kartu = scan.nextLine(); System.out.print("Total belanjaan: "); belanjaan = scan.nextInt(); // proses if (kartu.equalsIgnoreCase("ya")) { if (belanjaan > 500000) { diskon = 50000; } else if (belanjaan > 100000) { diskon = 15000; } else { diskon = 0; } } else { if (belanjaan > 100000) { diskon = 5000; } else { diskon = 0; } } // total yang harus dibayar bayar = belanjaan - diskon; // output System.out.println("Total Bayar: Rp " + bayar); } }
- Menggunakan Operator Logika dalam Percabangan, bisa membuat percabangan menjadi lebih singkat, misalnya :
public class Tilang { public static void main(String[] args) { boolean SIM = false; boolean STNK = true; // cek apakah dia akan ditilang atau tidak if(SIM == true){ if( STNK == true ) { System.out.println("Tidak ditilang!"); } } else { System.out.println("Anda ditilang!"); } } }
Perulangan dalam pemrograman JAVA dibagi menjadi dua jenis, yaitu :
- Counted loop: Perulangan yang jumlah pengulangannya terhitung atau tentu, terdiri dari :
- perulangan For, misalnya :
class Bintang{ public static void main(String[] args){ for(int i=0; i <= 5; i++){ System.out.println("*****"); } } }
- perulangan For each, misalnya :
public class PerulanganForeach { public static void main(String[] args) { // membuat array int angka[] = {3,1,42,24,12}; // menggunakan perulangan For each untuk menampilkan angka for( int x : angka ){ System.out.print(x + " "); } } }
- perulangan For, misalnya :
- Uncounted loop: Perulangan yang jumlah pengulangannya tidak terhitung atau tidak tentu, terdiri dari :
- perulangan While, misalnya :
int i = 0; while ( i <= 10 ){ // blok kode yang akan diulang System.out.println('Perulangan ke-' + i); // increment nilai i i++; }
- perulangan Do/While, misalnya :
public class PerulanganDoWhile { public static void main(String[] args) { // membuat variabel int i = 0; do { System.out.println("perulangan ke-" + i); i++; } while ( i <= 10); } }
- perulangan While, misalnya :
- Parulangan Bersarang (Nested Loop), misalnya :
public class PerulanganBersarang { public static void main(String[] args) { // membuat variabel int x, y; // melakukan parulang sebnayan x dan y kali for (x = 0; x <= 5; x++){ for( y = 0; y <= 3; y++){ System.out.format("Perulangan [x=%d, y=%d] %n", x, y); } } } }
Array adalah sebuah variabel yang bisa menyimpan banyak data dalam satu variabel, menggunakan indeks untuk memudahkan akses terhadap data yang disimpannya, Indeks array selalu dimulai dari 0, menggunakan kurung siku []
untuk membuat array, macamnya meliputi :
- Array multi dimensi, merupakan array yang memiliki lebih dari satu dimensi, atau array di dalam array, misalnya :
import java.util.Scanner; public class RuangKelas { public static void main(String[] args) { // Membuat Array dan Scanner String[][] meja = new String[2][3]; Scanner scan = new Scanner(System.in); // mengisi setiap meja for(int bar = 0; bar < meja.length; bar++){ for(int kol = 0; kol < meja[bar].length; kol++){ System.out.format("Siapa yang akan duduk di meja (%d,%d): ", bar, kol); meja[bar][kol] = scan.nextLine(); } } // menampilkan isi Array System.out.println("-------------------------"); for(int bar = 0; bar < meja.length; bar++){ for(int kol = 0; kol < meja[bar].length; kol++){ System.out.format("| %s | \t", meja[bar][kol]); } System.out.println(""); } System.out.println("-------------------------"); } }
- Array list, merupakan sebuah class yang memungkinkan membuat sebuah objek untuk menampung apapun, untuk menggunakan Array List, harus mengimpornya terlebih dahulu, misalnya :
import java.util.ArrayList; public class Doraemon { public static void main(String[] args) { // membuat objek array list ArrayList kantongAjaib = new ArrayList(); // Mengisi kantong ajaib dengan 5 benda kantongAjaib.add("Senter Pembesar"); kantongAjaib.add(532); kantongAjaib.add("tikus"); kantongAjaib.add(1231234.132); kantongAjaib.add(true); // menghapus tikus dari kantong ajaib kantongAjaib.remove("tikus"); // Menampilkan isi kantong ajaib System.out.println(kantongAjaib); // menampilkan banyak isi kantong ajaib System.out.println("Kantong ajaib berisi "+ kantongAjaib.size() +" item"); } }
Prosedur/fungsi/method yang selanjutnya disebut fungsi, dapat memecah program menjadi sub-sub program, sehingga kita bisa membuat program lebih efisien, dimana :
- Prosedur adalah sebutan untuk fungsi yang tidak mengembalikan nilai. Fungsi ini biasanya ditandai dengan kata kunci
void
. - Fungsi adalah sebutan untuk fungsi yang mengembalikan nilai.
- Method adalah fungsi yang berada di dalam Class. Sebutan ini, biasanya digunakan pada OOP
misalnya :
class BelajarFungsi {
// membuat fungsi ucapSalam()
static void ucapSalam(){
System.out.println("Selamat Pagi");
}
// membuat fungsi main()
public static void main(String[] args){
// memanggil/eksekusi fungsi ucapSalam()
ucapSalam();
}
}