Input dan Output pada Java
Cara Mengambil Input dan Menampilkan Output

Seperti yang kita ketahui, program komputer terdiri dari tiga komponen utama, yaitu: input, proses, dan output.
- Input: nilai yang kita masukan ke program
 - Proses: langkah demi langkah yang dilakukan untuk mengelola input menjadi sesuatu yang berguna
 - Output: hasil pengolahan
 
Semua bahasa pemrograman telah menyediakan fungs-fungsi untuk melakukan input dan output.
Java sendiri sudah menyediakan tiga class untuk mengambil input:
- Class Scanner;
 - Class BufferReader;
 - dan Class Console.
 
Tiga class tersebut untuk mengambil input pada program berbasis teks (console). Sedangkan untuk GUI menggunakan class yang lain seperti JOptionPane dan inputbox pada form.
Sementara untuk outputnya, Java menyediakan fungsi 
print(), println(), dan format().Mengambil Input dengan Class Scanner
Scanner merupakan class yang menyediakan fungsi-fungsi untuk mengambil input dari keyboard.
Agar kita bisa menggunakan Scanner, kita perlu mengimpornya ke dalam kode:
import java.util.Scanner;
Sekarang adalah pertemuan ke-2, jadi buatlah paket baru bernama pertemuan2 pada source packages.
Klik kanan pada souce packages, kemudian pilih new package:

Kemudian isi nama paket dengan pertemuan2, lalu klik Finish:

Setelah itu, lanjutkan dengan membuat kelas (java class) baru di paket pertemuan2:

Berikan nama: DataKaryawan. Kemudian klik Finish:

Setelah itu, silahkan ikuti kode berikut ini:
package pertemuan2;
// 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();
        // Menampilkan apa yang sudah simpan di variabel
        System.out.println("--------------------");
        System.out.println("Nama Karyawan: " + nama);
        System.out.println("Alamat: " + alamat);
        System.out.println("Usia: " + usia + " tahun");
        System.out.println("Gaji: Rp " + gaji);
    }
}
Perlu diperhatikan, penggunakan fungsi untuk mengambil data bergantung dari tipe data yang digunakan.
Misal, tipe datanya adalah String, maka fungsi atau method yang dipakai adalah 
nextLine().
Begitu juga dengan tipe data lain, Integer menggunakan 
nextInt(), Double menggunakan nextDouble(), dsb.
Setelah selesai membuat program, silahkan dijalankan. Klik kanan kemudian pilih Run File atau tekan tombol [Shift]+[F6].

Mengambil Input dengan Class BufferReader
Class 
BufferReader sebenarnya tidak hanya untuk mengambil input dari keyboard saja.
Class ini juga dapat digunakan untuk membaca input dari file dan jaringan.
Class ini terletak di dalam paket 
java.io.
Silahkan diimpor untuk dapat menggunakan class 
BufferReader.import java.io.BufferedReader;
Silahkan buat class baru bernama 
ContohBufferReader, kemudian isi dengan kode berikut ini.package pertemuan2;
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 varibel nama dengan Bufferreader
        System.out.print("Inputkan nama: ");
        nama = br.readLine();
        // tampilkan output isi variabel nama
        System.out.println("Nama kamu adalah " + nama);
    }
}
Ternyata class 
BufferReader tidak bisa bekerja sendirian. Dia juga butuh teman yaitu: class InputStreamReader dan class IOException.
Sekarang mari kita coba jalankan programnya:

Perbedaan 
BufferReader dengan Scanner terlihat dari fungsi atau method yang dipakai.Scanner menggunakan next(), sedangkan BufferReader menggunakan readLine().
Lalu untuk tipe data integer, 
BufferReader menggunakan fungsi read() saja. Hal ini dapat kita lihat dalam hint autocomplete .
Tips: Tekan 
Ctrl+Spasi saat menulis kode untuk menampilkan hint autocomplete .Mengambil Input dengan Class Console
Class 
Console hampir sama dengan BufferReader. Dia juga menggunakan fungsi readLine() untuk mengambil input.
Akan tetapi…
Class ini hanya bisa digunakan di lingkungan console saja, seperti Terminal dan CMD.
Class 
Console tidak bisa digunakan langsung di Netbeans.
Maka dari itu, kita harus kompilasi secara manual.
Untuk menggunakan class ini, kita perlu mengimpornya terlebih dahulu.
import java.io.Console;
Buatlah file baru bernama 
InputConsole.java dengan isi sebagai berikut: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());
        // mengampilkan isi variabel nama dan usia
        System.out.println("Nama kamu adalah: " + nama);
        System.out.println("Saat ini berusia " + usia + " tahun");
    }
}
Perhatikan: dalam kode di atas, kita menggunakan fungsi 
Integer.parseInt(con.readLine()) untuk tipe data integer. Artinya, kita merubah tipe data String ke Integer.
Karena 
Console tidak memiliki nilai kembalian berupa integer untuk fungsi read().
Lanjut…
Setelah itu, lakukan kompilasi melalui Terminal atau CMD. Buka terminal, kemudian masuk ke direktori tempat menyimpan kodenya.
Ketik perintah: 
javac InputConsole.java untuk melakukan kompilasi.
Setelah itu, ketik perintah 
java InputConsole untuk menjalankannya:
Menampilkan Output
Kita sudah mengenal beberapa cara mengambil input dari keyboard untuk program berbasis teks.
Sekarang bagaimana dengan outputnya?
Ada beberapa fungsi yang sudah disediakan oleh Java:
- Fungsi 
System.out.print() - Fungsi 
System.out.println() - Fungsi 
System.out.format() 
Apa saja perbedaan dari fungsi-fungsi tersebut?
Mari kita bahas…
Fungsi print() vs println()
Fungsi 
print() dan println() sama-sama digunakan untuk menampilkan teks.
Lalu apa bedanya?
Fungsi 
print() akan menampilkan teks apa adanya. Sedangkan println() akan menampilkan teks dengan ditambah baris baru.
Mari kita coba dalam kode:
package eksperimen;
public class PrintVsPrinln {
    public static void main(String[] args) {
        System.out.print("ini teks yang dicetak dengan print()");
        System.out.println("sedangkan ini teks yang dicetak dengan println()");
        System.out.print("pake print() lagi");
    }
}
Sekarang lihat hasil outputnya:

Menggabungkan String
Ketika menggunakan fungsi 
print() maupun println(), kadang kita perlu mengambil teks dari variabel dan menggabungkannya dengan teks yang lain.
Misalnya seperti ini:
Kita punya variabel 
namaDepan dan namaBelakang:String namaDepan = "Petani";
String namaBelakang = "Kode";
Kemudian kita ingin menampilkannya dengan fungsi 
print(), maka kita hanya perlu memasukkannya ke sana.System.out.print(namaDepan);
System.out.print(namaBelakang);
Kode tersebut akan menghasilkan: 
PetaniKode
Sebenarnya kita tidak perlu menggunakan dua fungsi 
print(), karena kita bisa menggabungkannya dengan operator +.
Contoh:
System.out.print(namaDepan + namaBelakang);
Agar ada spasi, tinggal ditambahkan saja spasi:
System.out.print(namaDepan + " " + namaBelakang);
Format String
Sedangkan untuk menggabungkan String yang lebih kompleks, kita bisa menggunakan fungsi 
format().
Contoh:
package eksperimen;
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);
    }
}
Perhatikan: di sana kita menggunakan simbol 
%s untuk mengambil nilai dari variabel di sampingnya. %s artinya string.
Selain 
%s, ada juga simbol lain:%duntuk desimal atau angka;%funtuk bilangan pecahan;%nuntuk baris baru, bisa juga pakai\n;- dan masih banyak lagi, cek di dokumentasi java.
 

Kode di atas akan menghasilkan: 
Nama saya Petani KodeReferensi : https://www.petanikode.com/java-input-output/Memahami Konsep Dasar OOP pada Java

Memahami Konsep Dasar OOP

OOP merupakan hal yang harus dipelajari untuk memahami Java lebih dalam. Karena Java sendiri merupakan bahasa yang didesain untuk OOP.
Buktinya:
Saat kita membuat program pertama, kita diwajibkan menggunakan class.
class Hello {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
OOP dikenal sebagai teknik pemrograman modern yang lebih efisien dan banyak digunakan pada Framework.
Jika kamu ingin memahami Framework, pelajari dulu konsep OOP
Jadi tidak ada alasan untuk tidak belajar OOP.
Apa saja yang akan kita pelajari pada artikel ini?
- Apa itu OOP?
 - Objek dan Class
 - Class Diagram
 
Mari kita mulai…
Apa itu OOP?
OOP (Object Oriented Programming) atau dalam bahasa indonesia dikenal dengan pemrograman berorientasikan objek (PBO) merupakan sebuah paradigma atau teknik pemrograman yang berorientesikan Objek.
Pada OOP, Fungsi dan variabel dibungkus dalam sebuah objek atau class yang dapat saling brinteraksi, sehingga membentuk sebuah program.

Variabel dalam objek akan menyimpan data dari objek. Sedangkan fungsi akan menentukan operasinya.
Contoh objek dalam dunia nyata: Mobil, Burung, Drone, Meja, Pohon, dll.
------------------OBJEK
Drone
------------------Variabel/Atribut
energi = 100;
ketinggian = 200;
kecepatan = 29;
------------------Fungsi
terbang();
matikanMesin();
turun();
maju();
mundur();
belok();
------------------
Semua objek di dunia nyata yang memiliki sifat dan tingkah laku, bisa kita representasikan dalam kode.
Kata kunci yang perlu diingat:
“Objek isinya data dan fungsi”
Class dan Object
Class adalah rancangan atau blue print dari sebuah objek.
Sedangkan objek dalam pemrograman adalah sebuah variabel yang merupakan instance dari Class.
Instance bisa diartikan sebagai wujud dari class.
Class berisi definisi variabel dan fungsi yang menggambarkan sebuah objek.
Dalam OOP:
- Variabel disebut atribut atau properti;
 - Fungsi disebut method.
 
Contoh Class:
class NamaClass {
    String atribut1;
    String atribut2;
    void namaMethod(){ ... }
    void namaMethodLain(){ ... }
}
Lalu, Kita biasanya membuat objek (instance) seperti ini:
NamaClass namaObj = new NamaClass();
Kata kunci 
new berfungsi untuk membuat objek baru dari class tertentu.
Setelah membuat objek, kita bisa mengakses atribut dan method dari objek tersebut.
Contoh:
namaObj.namaMethod();
namaObj.atribut1;
Tanda titik (
.) berfungsi untuk mengakses atribut dan method.Contoh Program OOP
Kita akan menggunakan Netbeans, silahkan buat project baru.

Isi nama project-nya dengan “BelajarOOP” dan jangan centang “Create Main Class”.

Setelah itu, silahkan buat package baru. Klik kanan pada <default package>, lalu pilih New->Java Package.

Isi nama package dengan “dasar”:

Setelah itu, di dalam package 
dasar, silahkan buat class baru bernama Player.java.
Klik kanan pada package 
dasar lalu pilih New->Java Class. Setelah itu, isi namanya dengan Player.java.
Silahkan tulis kode pada 
Player.java seperti ini:package dasar;
public class Player {
    
    // definisi atribut
    String name;
    int speed;
    int healthPoin;
    // definisi method run
    void run(){
        System.out.println(name +" is running...");
        System.out.println("Speed: "+ speed);
    }
    // definisi method isDead untuk mengecek nilai kesehatan (healthPoin)
    boolean isDead(){
        if(healthPoin <= 0) return true;
        return false;
    }
    
}
Berikutnya, buat class baru lagi bernama 
Game.java dan isi kodenya seperti ini:package dasar;
public class Game {
    public static void main(String[] args){
        // membuat objek player
        Player petani = new Player();
        // mengisi atribut player
        petani.name = "Petani Kode";
        petani.speed = 78;
        petani.healthPoin = 100;
        // menjalankan method
        petani.run();
        if(petani.isDead()){
            System.out.println("Game Over!");
        }
    }
}
Coba eksekusi 
Game.java dengan klik kanan pada Game.java lalu pilih Run File. Maka hasilnya:
Coba ganti nilai 
healthPoin menjadi 0.petani.healthPoin = 0;
Setelah itu, coba eksekusi lagi:

Player 
petani sudah mati, Game selsai! 
Baik, kita mulai dari pembuatan class.
Pertama-tama, kita membuat sebuah class dengan nama 
Player. Class ini mendefinisikan objek Player dalam Game dengan atribut sebagai berikut:nameadalah nama objek;speedadalah kecepatan;healthPoinadalah nilai kesehatan dari player, biasanya disingkathp.
Lalu class 
Player memiliki method:run()untuk menggerakkan player;isDead()untuk mengecek kondisi kesehatan player. Method ini akan mengembalikan nilaitrueapabila nilaihplebih kecil atau sama dengan nol (0), sebaliknya akan mengembalikan nilaifalse.
Berikutnya kita membuat objek baru dari class 
Player pada class Game bernama petani.// membuat objek player
Player petani = new Player();
Setelah itu mengisi atribut-atributny. Karena kalau tidak diisi akan bernilai Null dan bisa menyebabkan NullPointerException.

Berikutnya kita coba modifikasi nilai 
hp menjadi nol.
Hasilnya, pesan 
Game Over! akan ditampilkan. Karena method isDead() akan mengembalikan nilai true jika nilai hp kurang atau sama dengan nol.
Contoh Program OOP 2: Program Drone
Untuk praktek berikutnya, coba buat class 
Drone.class Drone {
    // atribut
    int energi;
    int ketinggian;
    int kecepatan;
    String merek;
    // method
    void terbang(){
        energi--;
        if(energi > 10){
            // terbang berarti nilai ketinggian bertambah
            ketinggian++;
            System.out.println("Dorne terbang...");
        } else {
            System.out.println("Energi lemah: Drone nggak bisa terbang");
        }
    }
    void matikanMesin(){
        if(ketinggian > 0){
            System.out.println("Mesin tidak bisa dimatikan karena sedang terbang");
        } else {
            System.out.println("Mesin dimatikan...");
        }
    }
    void turun(){
        // ketinggian berkurang, karena turun
        ketinggian--;
        energi--;
        System.out.println("Drone turun");
    }
    void belok(){
        energi--;
        System.out.println("Drone belok");
        // belok ke mana? perlu dicek :)
    }
    void maju(){
        energi--;
        System.out.println("Drone maju ke depan");
        kecepatan++;
    }
    void mundur(){
        energi--;
        System.out.println("Drone mundur");
        kecepatan++;
    }
}
Bagaimana Menentukan Atribut dan Method dari Objek?
Seperti yang sudah dijelaskan di awal. Objek memiliki data (atribut) dan operasi (fungsi).
Kuncinya:
- Atribut itu seperti ciri-ciri dari objek.
 - Method itu seperti tingkah laku atau operasi.
 
Contoh:
Misalkan kita ingin membuat class dari 
Senjata.
Apa ciri-ciri dari senjata atau data yang bisa dijadikan atribut?
- jumlah peluru
 - jenis
 - nama senjata
 - berat
 - warna
 - dll
 
Lalu apa tingkah laku atau operasi (fungsi) yang bisa dilakukan?
- tembak()
 - lempar()
 - kurangiPeluru()
 - reload()
 - dll.
 

Maka class-nya bisa dibuat seperti ini:
class Senjata {
    // atribut
    String nama;
    int jumlahPeluru;
    
    // method
    void tembak(){
        //..
        // setelah nembak, kurangi peluru
        jumlahPeluru--;
    }
    void reload(){
        //..
        // kalau di-reload maka jumlah peluru diisi ulang
        jumlahPeluru = 300;
    }
}
Mudah bukan…
Mengenal Class Diagram
Class Diagram adalah sebuah diagram yang menggambarkan hubungan antar class. Class Diagram dapat kita buat dengan aplikasi perancangan (CASE), seperti StarUML.

Sebauh class digambarkan dengan sebuah tabel 1 kolom dan 3 baris.
Baris pertama berisi nama class; Baris kedua berisi atribut; dan Baris ketiga berisi method.

Selain itu, terdapat garis yang menggambarkan hubungan antar class.

Class Diagram biasanya digunakan oleh software engineer untuk merancang software dengan paradigma OOP.
Sebagai programmer, kita hanya perlu tahu cara membaca dan menuliskannya ke dalam kode.
Jika kamu tertarik dengan class diagram, bisa membaca buku-buku tentang UML.
Referensi : https://www.petanikode.com/java-oop/




![Fungsi String[] args pada Pemrograman Java Fungsi String[] args pada Pemrograman Java](https://d33wubrfki0l68.cloudfront.net/a2d772fbde5645ecbe9531b65ee7b753b5e09b59/d4426/img/java/args/program-tanpa-string-args.png)