Java - Metode

Metode Java adalah kumpulan pernyataan yang dikelompokkan bersama untuk melakukan operasi. Saat Anda memanggil System.out.println() metode, misalnya, sistem benar-benar menjalankan beberapa pernyataan untuk menampilkan pesan di konsol.

Sekarang Anda akan belajar cara membuat metode Anda sendiri dengan atau tanpa nilai kembalian, memanggil metode dengan atau tanpa parameter, dan menerapkan abstraksi metode dalam desain program.

Membuat Metode

Mempertimbangkan contoh berikut untuk menjelaskan sintaks suatu metode -

Syntax

public static int methodName(int a, int b) {
   // body
}

Sini,

  • public static - pengubah

  • int - tipe pengembalian

  • methodName - nama metode

  • a, b - parameter formal

  • int a, int b - daftar parameter

Definisi metode terdiri dari header metode dan isi metode. Hal yang sama ditunjukkan pada sintaks berikut -

Syntax

modifier returnType nameOfMethod (Parameter List) {
   // method body
}

Sintaks yang ditunjukkan di atas meliputi -

  • modifier - Ini mendefinisikan jenis akses metode dan opsional untuk digunakan.

  • returnType - Metode dapat mengembalikan nilai.

  • nameOfMethod- Ini adalah nama metode. Tanda tangan metode terdiri dari nama metode dan daftar parameter.

  • Parameter List- Daftar parameter, yaitu jenis, urutan, dan jumlah parameter dari suatu metode. Ini opsional, metode mungkin berisi parameter nol.

  • method body - Tubuh metode mendefinisikan apa yang dilakukan metode dengan pernyataan.

Example

Berikut adalah kode sumber dari metode yang didefinisikan di atas yang disebut min(). Metode ini mengambil dua parameter num1 dan num2 dan mengembalikan maksimum antara keduanya -

/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

Metode Memanggil

Untuk menggunakan metode, itu harus dipanggil. Ada dua cara di mana suatu metode dipanggil yaitu, metode mengembalikan nilai atau tidak mengembalikan apa pun (tidak ada nilai pengembalian).

Proses pemanggilan metode sederhana. Ketika program memanggil metode, kontrol program akan ditransfer ke metode yang dipanggil. Metode yang dipanggil ini kemudian mengembalikan kontrol ke pemanggil dalam dua kondisi, ketika -

  • pernyataan return dieksekusi.
  • itu mencapai metode yang mengakhiri kurung kurawal tutup.

Metode mengembalikan kekosongan dianggap sebagai panggilan ke pernyataan. Mari pertimbangkan contoh -

System.out.println("This is tutorialspoint.com!");

Nilai pengembalian metode dapat dipahami dengan contoh berikut -

int result = sum(6, 9);

Berikut adalah contoh untuk mendemonstrasikan bagaimana mendefinisikan sebuah metode dan bagaimana memanggilnya -

Example

public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

Minimum value = 6

Kata kunci void

Kata kunci void memungkinkan kita membuat metode yang tidak mengembalikan nilai. Di sini, dalam contoh berikut kami sedang mempertimbangkan metode metode void methodRankPoints . Metode ini adalah metode kosong, yang tidak mengembalikan nilai apa pun. Panggilan ke metode void harus berupa pernyataan yaitu methodRankPoints (255.7); . Ini adalah pernyataan Java yang diakhiri dengan titik koma seperti yang ditunjukkan pada contoh berikut.

Example

public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

Rank:A1

Meneruskan Parameter berdasarkan Nilai

Saat bekerja di bawah proses pemanggilan, argumen harus diteruskan. Ini harus dalam urutan yang sama dengan parameternya masing-masing dalam spesifikasi metode. Parameter dapat diteruskan dengan nilai atau referensi.

Meneruskan Parameter dengan Nilai berarti memanggil metode dengan parameter. Melalui ini, nilai argumen diteruskan ke parameter.

Example

Program berikut menunjukkan contoh melewatkan parameter dengan nilai. Nilai argumen tetap sama bahkan setelah pemanggilan metode.

public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

Metode Overloading

Ketika sebuah kelas memiliki dua atau lebih metode dengan nama yang sama tetapi parameter yang berbeda, itu dikenal sebagai overloading metode. Ini berbeda dengan menimpa. Dalam menimpa, suatu metode memiliki nama metode, jenis, jumlah parameter yang sama, dll.

Mari kita pertimbangkan contoh yang dibahas sebelumnya untuk menemukan bilangan minimum tipe integer. Jika, katakanlah kita ingin mencari jumlah minimum tipe ganda. Kemudian konsep overloading akan diperkenalkan untuk membuat dua atau lebih metode dengan nama yang sama tetapi parameter yang berbeda.

Contoh berikut menjelaskan hal yang sama -

Example

public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

Minimum Value = 6
Minimum Value = 7.3

Metode overloading membuat program dapat dibaca. Di sini, dua metode diberikan dengan nama yang sama tetapi dengan parameter yang berbeda. Hasilnya adalah angka minimum dari tipe integer dan double.

Menggunakan Argumen Baris Perintah

Terkadang Anda ingin meneruskan beberapa informasi ke dalam program saat Anda menjalankannya. Ini dilakukan dengan meneruskan argumen baris perintah ke main ().

Argumen baris perintah adalah informasi yang secara langsung mengikuti nama program pada baris perintah ketika dijalankan. Untuk mengakses argumen baris perintah di dalam program Java cukup mudah. Mereka disimpan sebagai string dalam array String yang diteruskan ke main ().

Example

Program berikut menampilkan semua argumen baris perintah yang dipanggil dengan -

public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}

Coba jalankan program ini seperti yang ditunjukkan di sini -

$java CommandLine this is a command line 200 -100

Ini akan menghasilkan hasil sebagai berikut -

Output

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

Kata kunci ini

thisadalah kata kunci di Java yang digunakan sebagai referensi ke objek kelas saat ini, dengan metode instance atau konstruktor. Dengan menggunakan ini, Anda dapat merujuk anggota kelas seperti konstruktor, variabel, dan metode.

Note- Kata kunci ini hanya digunakan dalam metode atau konstruktor contoh

Secara umum, kata kunci this digunakan untuk -

  • Bedakan variabel instan dari variabel lokal jika memiliki nama yang sama, dalam konstruktor atau metode.

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
  • Panggil satu jenis konstruktor (konstruktor parametrized atau default) dari yang lain dalam sebuah kelas. Ini dikenal sebagai pemanggilan konstruktor eksplisit.

class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
}

Example

Berikut adalah contoh yang menggunakan kata kunci ini untuk mengakses anggota kelas. Salin dan tempel program berikut dalam file dengan nama,This_Example.java.

public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

Argumen Variabel (var-args)

JDK 1.5 memungkinkan Anda meneruskan sejumlah variabel argumen dengan tipe yang sama ke metode. Parameter dalam metode ini dideklarasikan sebagai berikut -

typeName... parameterName

Dalam deklarasi metode, Anda menentukan tipe yang diikuti dengan elipsis (...). Hanya satu parameter panjang variabel yang dapat ditentukan dalam sebuah metode, dan parameter ini harus menjadi parameter terakhir. Parameter reguler apa pun harus mendahuluinya.

Example

public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
	   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

Ini akan menghasilkan hasil sebagai berikut -

Output

The max value is 56.5
The max value is 3.0

Metode finalize ()

Dimungkinkan untuk menentukan metode yang akan dipanggil tepat sebelum pemusnahan akhir objek oleh pengumpul sampah. Metode ini disebutfinalize( ), dan dapat digunakan untuk memastikan bahwa suatu objek berakhir dengan bersih.

Misalnya, Anda mungkin menggunakan finalize () untuk memastikan bahwa file terbuka yang dimiliki oleh objek tersebut ditutup.

Untuk menambahkan finalizer ke kelas, Anda cukup mendefinisikan metode finalize (). Runtime Java memanggil metode itu setiap kali akan mendaur ulang objek dari kelas itu.

Di dalam metode finalize (), Anda akan menentukan tindakan yang harus dilakukan sebelum objek dimusnahkan.

Metode finalize () memiliki bentuk umum ini -

protected void finalize( ) {
   // finalization code here
}

Di sini, kata kunci yang dilindungi adalah penentu yang mencegah akses ke finalize () dengan kode yang ditentukan di luar kelasnya.

Ini berarti Anda tidak dapat mengetahui kapan atau bahkan jika finalize () akan dijalankan. Misalnya, jika program Anda berakhir sebelum pengumpulan sampah terjadi, finalize () tidak akan dijalankan.