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 file Program.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 :
Struktur program Java secara umum dibagi menjadi 4 bagian, yaitu :
Aturan Penulisan Sintaks Java, meliputi :
- 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");
}
}
- 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);
}
}
Variabel dan tipe data pada JAVA meliputi :
- Tipe data pada Java, terdiri dari :
char: Tipe data karakter, contoh Zint: angka atau bilangan bulat, contoh 29float: bilangan desimal, contoh 2.1double: bilangan desimal juga, tapi lebih besar kapasitasnya, contoh 2.1String: kumpulan dari karakter yang membentuk teks, contoh Hello World!boolean: tipe data yang hanya bernilai true dan false
- 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
- 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 dan false, 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, dan byte 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 + " ");
}
}
}
- 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);
}
}
- 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();
}
}