Tutorial Belajar Java Part 40: Fungsi Perintah Return dalam Function

Setelah memahami cara pembuatan fungsi serta perbedaan parameter dengan argument, pada tutorial belajar bahasa Java di Duniailkom kali ini kita akan bahas lebih jauh tentang fungsi perintah return di dalam function.


Pengertian Perintah Return bahasa Java

Sebelumnya kita sudah membuat beberapa function yang ketika di panggil akan langsung menampilkan teks yang berasal dari perintah System.out.println(). Berikut salah satu contoh yang dimaksud:

class BelajarJava {
  
  static void hitungLuasSegitiga(int alas, int tinggi) {
    double luas = (alas * tinggi) / 2;
    System.out.println("Luas segitiga adalah: "+luas);
  }
  
  public static void main(String args[]){
    hitungLuasSegitiga(5, 7);
  }
  
}

Hasil kode program:

Luas segitiga adalah: 17.0

Di baris 9, begitu function hitungLuasSegitiga(5, 7) di panggil, akan tampil teks Luas segitiga adalah: 17.0.

Tidak ada yang salah dari penulisan fungsi ini, hanya saja terasa kurang fleksibel. Tidak selamanya kita ingin menampilkan teks secara langsung.

Dalam banyak situasi, hasil fungsi akan disimpan ke dalam variabel terlebih dahulu untuk kemudian baru di oleh lebih lanjut, misalnya ditambah ke operasi lain, di input sebagai argumen ke dalam function lain, dst. Tugas menampilkan teks seharusnya di lakukan dari kode program utama, bukan langsung dari dalam fungsi.

Untuk keperluan inilah kita perlu menambah perintah return ke dalam function. Tujuannya, agar sebuah function bisa mengembalikan nilai.

Langsung saja kita lihat modifikasi dari fungsi hitungLuasSegitiga() yang sekarang menjalankan perintah return:

class BelajarJava {
  
  static double hitungLuasSegitiga(double alas, double tinggi) {
    double luas = (alas * tinggi) / 2;
    return luas;
  }
  
  public static void main(String args[]){
    double foo = hitungLuasSegitiga(2, 3);
    System.out.println(foo);
  }
  
}

Hasil kode program:

3.0

Dalam bahasa Java, tipe data dari nilai yang dikembalikan fungsi harus di tulis di awal. Pada contoh di atas, tipe data yang dikembalikan oleh fungsi hitungLuasSegitiga() ini adalah double, yang saya tulis di baris 3 setelah keyword static. Sebelumnya di bagian ini terdapat keyword void.

Selanjutnya di baris 4 perhitungan mencari luas segitiga dilakukan oleh perintah double luas = (alas * tinggi) / 2. Tidak ada yang baru di baris ini.

Perintah return sendiri ada di baris 5, yakni berupa return luas. Artinya, kembalikan nilai yang tersimpan di dalam variabel luas. Kemana nilai ini di kembalikan? yakni kepada kode yang akan memanggil fungsi tersebut.

Di baris 8, saya membuat sebuah variabel foo bertipe double. Kemudian mengisinya dengan memanggil function hitungLuasSegitiga(2, 3). Hasilnya, variabel foo akan berisi angka 3.0.

Seperti inilah cara penggunaan perintah return dalam mengembalikan nilai function.


Mengembalikan Langsung Hasil Operasi

Dalam contoh di atas kita mengembalikan nilai dari variabel. Namun juga bisa langsung mengembalikan hasil sebuah operasi. Perhatikan kode program berikut ini:

class BelajarJava {
  
  static double hitungLuasSegitiga(double alas, double tinggi) {
    return (alas * tinggi) / 2;
  }
  
  public static void main(String args[]){
    System.out.println("Luas segitiga adalah: "+hitungLuasSegitiga(5, 7));
  }
  
}

Hasil kode program:

Luas segitiga adalah: 17.5

Sekarang di baris 4 saya langsung mengembalikan nilai (alas * tinggi) / 2, tidak perlu lagi menyimpannya ke dalam variabel luas terlebih dahulu.

Kemudian di baris 8 pemanggilan fungsi hitungLuasSegitiga() dilakukan langsung dari dalam perintah System.out.println(), juga tidak perlu disimpan ke dalam sebuah variabel.


Hal-hal yang Harus Diperhatikan Untuk Perintah Return

Terdapat beberapa hal yang harus diperhatikan ketika membuat function dengan perintah return.

Pertama, tipe data yang dikembalikan harus sesuai dengan yang ditulis ketika pendefinisian function. Berikut contoh kasusnya:

class BelajarJava {
  
  static int hitungLuasSegitiga(double alas, double tinggi) {
    return (alas * tinggi) / 2;
  }
  
  public static void main(String args[]){
    System.out.println("Luas segitiga adalah: "+hitungLuasSegitiga(5, 7));
  }
  
}

Hasil kode program:

BelajarJava.java:4: error: incompatible types: possible lossy 
conversion from double to int
    return (alas * tinggi) / 2;
                           ^
1 error

Error terjadi karena di baris 3 saya menulis tipe data kembalian sebagai int, padahal hasil dari perintah return (alas * tinggi) / 2 di baris 4 akan mengembalikan nilai double. Di bahasa Java kode seperti ini menjadi error, sedikit berbeda dengan bahasa C++ yang akan langsung mengkonversi nilai tersebut.

Hal kedua yang harus diperhatikan adalah, perintah return berfungsi mirip seperti break dalam perulangan. Jika ditemukan perintah return, pemrosesan function akan berhenti dan tidak akan mengeksekusi kode dibawahnya:

class BelajarJava {
  
  static double hitungLuasSegitiga(double alas, double tinggi) {
    return (alas * tinggi) / 2;
    System.out.println("Hello Duniailkom");
  }
  
  public static void main(String args[]){
    System.out.println("Luas segitiga adalah: "+hitungLuasSegitiga(5, 7));
  }
  
}

Hasil kode program:

BelajarJava.java:5: error: unreachable statement
    System.out.println("Hello Duniailkom");
    ^
1 error

Error diatas terjadi karena di baris 5 saya menulis perintah tambahan System.out.println("Hello Duniailkom"), padahal di atasnya sudah ada perintah return.

Dalam bahasa pemrograman lain seperti PHP atau JavaScript, perintah tambahan setelah return tidak akan menjadi error, hanya saja tidak akan pernah dijalankan. Sedangkan dalam bahasa Java akan tampil error. Pesan error ini sebenarnya sebuah keuntungan, karena compiler bahasa Java sudah mengingatkan ada sesuatu yang salah.


Contoh Lain Perintah Return Java

Sebagai contoh terakhir, tanpa menjalankan kode program bisakah anda menebak hasil dari kode berikut ini?

class BelajarJava {
  
  static int hargaSetelahPajak(int hargaDasar) {
    return hargaDasar + (hargaDasar * 10/100);
  }
  
  public static void main(String args[]){
    int hargaCilok = 5000;
    int hargaFinalCilok =  hargaSetelahPajak(hargaCilok);
    System.out.println("Harga cilok 1 porsi Rp."+hargaFinalCilok);
  }
  
}

Di baris 3 – 5, saya mendefinisikan sebuah function hargaSetelahPajak(). Setelah keyword static, terdapat perintah int yang berarti function ini akan mengembalikan nilai bertipe integer.

Function hargaSetelahPajak() butuh 1 parameter hargaDasar. Parameter hargaDasar kemudian di pakai dalam rumus perhitungan di baris 4, yakni return hargaDasar + (hargaDasar * 10/100). Karena terdapat perintah return, maka hasil perhitungan akan dikembalikan kepada kode program yang memanggilnya.

Masuk ke kode program utama, di baris 8 saya mengisi variabel hargaCilok dengan angka 5000. Selanjutnya di baris 9 juga membuat variabel hargaFinalCilok yang diisi dengan hasil dari pemanggilan function hargaSetelahPajak(hargaCilok).

Perintah ini akan mengirim argument 5000 yang tersimpan di dalam variabel hargaCilok ke dalam parameter hargaDasar di function hargaSetelahPajak().

Maka perintah return yang dijalankan adalah: return 5000 + (5000* 10/100), sehingga menghasilkan return 5500. Angka 5500 inilah yang dikembalikan ke dalam variabel hargaFinalCilok.

Di baris 10, hargaFinalCilok kemudian di input ke dalam perintah System.out.println() dan akan menampilkan teks:

Harga cilok 1 porsi Rp.5500

Dalam tutorial Java kali ini kita telah membahas pengertian perintah return serta contoh penggunaannya.

Mayoritas fungsi akan mengembalikan sebuah nilai, cukup jarang yang langsung menampilkan hasil dalam bentuk teks. Oleh karena itu cara penggunaan perintah return ini wajib untuk dipahami.

Selanjutnya kita akan dibahas tentang Pengertian Variable Scope dalam bahasa Java.

3 Comments

  1. Andreas N K Halawa
    28 May 22
    • Andre
      07 Jun 22

Add Comment

Leave a Reply to Andre Cancel reply