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.