Metode Java adalah kombinasi dari beberapa pernyataan untuk melakukan operasi. Misalnya, ketika Anda memanggil metode System.out.println, sistem akan benar -benar menjalankan banyak pernyataan untuk menghasilkan informasi pada konsol.
Sekarang Anda akan belajar cara membuat metode Anda sendiri. Mereka dapat memiliki nilai pengembalian atau tidak ada nilai pengembalian, dapat memiliki parameter atau tidak ada parameter. Metode kelebihan beban harus menggunakan nama metode yang sama dan menggunakan metode abstrak dalam pemrograman.
Metode pembuatan
Mari kita gunakan contoh berikut untuk menjelaskan sintaks metode ini:
public static int funcname (int a, int b) {// body}Di Sini
Metode juga berisi prosedur atau fungsi.
Definisi metode termasuk header metode dan badan metode. Seperti yang ditunjukkan di bawah ini:
Modifier returnType nameOfMethod (daftar parameter) {// Body Method}Sintaks di atas termasuk
Contoh
Ini adalah metode max () yang didefinisikan di atas, yang menerima dua parameter NUM1 dan NUM2 untuk mengembalikan nilai maksimum antara keduanya.
/** Cuplikan mengembalikan minimum antara dua angka*/minfungsi int statis publik (int n1, int n2) {int min; if (n1> n2) min = n2; lain min = n1; return min; } Panggilan metode
Untuk menggunakan metode, metode harus dipanggil. Ada dua cara untuk memanggil metode ini, satu memiliki nilai pengembalian, dan yang lainnya tidak memiliki nilai pengembalian.
Memanggil metode sangat sederhana. Ketika suatu program perlu memanggil metode, program kontrol ditransfer ke metode yang dipanggil. Metode ini akan mengembalikan dua kondisi ke penelepon:
Ambil metode yang mengembalikan kekosongan sebagai pernyataan panggilan, izinkan saya melihat contoh berikut:
System.out.println ("wiki.jikexueyuan.com!");Nilai pengembalian metode ini dapat dipahami dengan contoh berikut:
hasil int = jumlah (6, 9);
Contoh
Contoh berikut menunjukkan cara mendefinisikan metode dan cara menyebutnya:
Public Class ExpleMinNumber {public static void main (string [] args) {int a = 11; int b = 6; int c = minfunction (a, b); System.out.println ("Nilai Minimum =" + C); } / ** Mengembalikan minimum dua angka* / minfungsi int statis publik (int n1, int n2) {int min; if (n1> n2) min = n2; lain min = n1; return min; }}Hasil berikut akan diproduksi
Nilai minimum = 6
Kata kunci batal
Kata kunci void memungkinkan kita untuk membuat metode tanpa nilai pengembalian. Di sini kita membuat metode void MethodRankPoints dalam contoh berikutnya. Metode ini tidak memiliki tipe nilai pengembalian. Memanggil metode void harus mendeklarasikan MethodRankPoints (255.7); Pernyataan Java diakhiri dengan titik koma, seperti yang ditunjukkan di bawah ini:
Public Class ExpleVoid {public static void main (String [] args) {MethodRankPoints (255.7); } public static void MethodRankPoints (poin ganda) {if (point> = 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 berikut:
Peringkat: A1
Lulus parameter berdasarkan nilai
Parameter harus dilewati saat memanggil fungsi. Dan pesanan mereka harus sama dengan urutan parameter ketika mereka dibuat. Parameter dapat diteruskan oleh nilai atau referensi.
Meneruskan parameter melalui nilai berarti memanggil parameter metode, diteruskan ke parameter melalui nilai parameter.
Contoh
Program berikut memberikan contoh untuk menunjukkan bahwa parameter dilewatkan oleh nilai. Nilai parameter tidak akan berubah setelah memanggil metode.
Public Class SwappingExample {public static void main (string [] args) {int a = 30; int b = 45; System.out.println ("Sebelum bertukar, a =" + a + "dan b =" + b); // Aiblikan metode swap swapfunction (a, b); System.out.println ("/n ** sekarang, sebelum dan sesudah bertukar nilai akan sama di sini **:"); System.out.println ("Setelah bertukar, a =" + a + "dan b adalah" + b); } public static void swapfunction (int a, int b) {System.out.println ("sebelum bertukar (di dalam), a =" + a + "b =" + b); // Swap N1 dengan N2 int C = A; a = b; B = C; System.out.println ("Setelah bertukar (di dalam), a =" + a + "b =" + b); }}Ini akan menghasilkan hasil berikut:
Sebelum bertukar, A = 30 dan B = 45 sebelum bertukar (di dalam), A = 30 B = 45 setelah bertukar (di dalam), A = 45 B = 30 ** Sekarang, sebelum dan sesudah bertukar nilai akan sama di sini **: Setelah bertukar, A = 30 dan B adalah 45
Metode Overloading
Ketika metode memiliki dua atau lebih metode, namanya sama tetapi parameternya berbeda, itu disebut metode kelebihan. Berbeda dari penutup. Override mengacu pada jumlah metode dengan nama, jenis, dan parameter yang sama.
Mari kita pertimbangkan contoh sebelumnya untuk menemukan nomor integer minimum. Jika kami meminta untuk menemukan angka terkecil dalam jenis titik mengambang, kami perlu menggunakan kelebihan metode untuk membuat dua atau lebih metode dengan nama fungsi yang sama tetapi parameter yang berbeda.
Contoh -contoh berikut dijelaskan:
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); // Nama fungsi yang sama dengan parameter yang berbeda hasil ganda2 = minfunction (c, d); System.out.println ("Nilai Minimum =" + Hasil1); System.out.println ("Nilai Minimum =" + Hasil2); } // untuk integer integer integal int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; lain min = n1; return min; } // Untuk minfungsi ganda public static double (double n1, double n2) {double min; if (n1> n2) min = n2; lain min = n1; return min; }}Ini akan menghasilkan hasil berikut:
Nilai minimum = 6 nilai minimum = 7.3
Metode yang berlebihan membuat program mudah dibaca. Di sini, kedua metode tersebut memiliki nama yang sama tetapi parameter yang berbeda. Menghasilkan jumlah minimum integer dan jenis titik mengambang sebagai hasil dari program yang berjalan.
Gunakan parameter baris perintah
Terkadang Anda ingin melewati parameter sebelum program berjalan. Ini dapat dicapai dengan meneruskan parameter baris perintah ke fungsi utama.
Pada baris perintah, ketika Anda ingin menjalankan file program, parameter baris perintah muncul segera setelah nama file. Sangat mudah untuk menerima parameter baris perintah dalam program Java. Mereka diteruskan ke array karakter fungsi utama.
Contoh
Contoh berikut menunjukkan program yang mengeluarkan semua parameter baris perintah:
Commandline kelas publik {public static void main (string args []) {for (int i = 0; i <args.length; i ++) {System.out.println ("args [" + i + "]:" + args [i]); }}}Jalankan program dengan:
Java Commandline Ini adalah baris perintah 200 -100
Ini akan menghasilkan hasil berikut:
Args [0]: ThisArgs [1]: IsArgs [2]: Aargs [3]: CommandArgs [4]: Lineargs [5]: 200Args [6]: -100
Konstruktor
Berikut adalah contoh sederhana menggunakan konstruktor:
// konstruktor sederhana.class myclass {int x; // Berikut ini adalah konstruktor myclass () {x = 10; }}Anda dapat instantiate objek dengan memanggil konstruktor:
kelas publik consdemo {public static void main (string args []) {myclass t1 = new myclass (); Myclass t2 = myclass baru (); System.out.println (t1.x + "" + t2.x); }}Biasanya, Anda perlu menggunakan konstruktor untuk menerima satu atau lebih parameter. Parameter yang lewat sama dengan parameter yang lewat dari metode biasa yang diperkenalkan di atas, yaitu daftar daftar parameter setelah nama konstruktor.
Contoh
Berikut adalah contoh sederhana menggunakan konstruktor:
// konstruktor sederhana.class myclass {int x; // Berikut ini adalah konstruktor myclass (int i) {x = i; }}Anda dapat instantiate objek dengan memanggil konstruktor:
kelas publik consdemo {public static void main (string args []) {myclass t1 = myclass baru (10); Myclass t2 = myclass baru (20); System.out.println (t1.x + "" + t2.x); }}Ini akan menghasilkan hasil berikut:
10 20
Parameter panjang variabel
Jdk1.5 dapat memungkinkan Anda untuk melewati parameter panjang variabel dari jenis yang sama. Menyatakannya menggunakan metode berikut:
Typename ... ParameterName
Saat mendeklarasikan suatu metode, Anda perlu menentukan tipe parameter sebelum ellipsis, dan hanya ada satu parameter panjang variabel, dan parameter panjang variabel harus menjadi yang terakhir dari semua parameter.
Contoh
kelas publik varargsdemo {public static void main (string args []) {// panggilan panggilan dengan variabel args printmax (34, 3, 3, 2, 56.5); printmax (double baru [] {1, 2, 3}); } public static void printMax (double ... numbers) {if (numbers.length == 0) {System.out.println ("Tidak ada argumen yang dilewati"); kembali; } hasil ganda = angka [0]; untuk (int i = 1; i <number.length; i ++) if (angka [i]> hasil) hasil = angka [i]; System.out.println ("Nilai maks adalah" + hasil); }}Ini akan menghasilkan hasil berikut:
Nilai maks adalah 56.5 nilai maksimal adalah 3.0
finalisasi () metode
Anda dapat mendefinisikan metode yang hanya akan dipanggil sebelum dihancurkan oleh pengumpul sampah. Metode ini disebut metode finalisasi (), yang juga dapat digunakan untuk memastikan bahwa suatu objek dibersihkan.
Misalnya, Anda dapat menggunakan finalize () untuk memastikan bahwa file yang dibuka oleh suatu objek telah ditutup.
Untuk menambahkan finalizer ke kelas, Anda hanya perlu mendefinisikan metode finalisasi (). Ketika Java ingin mendaur ulang objek kelas ini, metode ini akan dipanggil.
Dalam metode finalisasi (), Anda akan menentukan beberapa perilaku yang harus dilakukan sebelum objek dihancurkan.
Metode finalisasi () umumnya mirip dengan yang berikut:
Protected void finalize () {// kode finalisasi di sini}Di sini, kata kunci yang dilindungi adalah untuk memastikan bahwa kode di luar kelas tidak dapat mengakses metode finalisasi ().
Ini berarti Anda tidak dapat tahu kapan finalisasi () dieksekusi. Misalnya, jika program Anda berakhir sebelum pengumpul sampah terjadi, metode finalisasi () tidak akan dieksekusi.
Metode generik:
Metode Java Generik banyak digunakan ketika metode ini mengembalikan nilai yang merupakan objek kelas kontainer.
Daftar statis publik <t> temukan (kelas <t> clazz, string userid) {....}Secara umum, saat menulis metode java generik, tipe nilai pengembalian dan setidaknya satu jenis parameter harus generik, dan jenisnya harus sama. Jika hanya salah satu jenis nilai pengembalian atau tipe parameter menggunakan generik, penggunaan metode generik ini akan sangat dibatasi, pada dasarnya ke tingkat yang sama seperti jika Anda tidak menggunakan obat generik.
Berikut ini terutama memperkenalkan penggunaan dua metode generik Java yang sangat mirip dan perbedaan di antara mereka.
Tipe pertama:
public static <t extends commonservice> t getService (class <t> clazz) {t service = (t) serviceMap.get (clazz.getname ()); if (service == null) {service = (t) serviceLocator.getService (clazz.getName ()); serviceMap.put (clazz.getName (), layanan); } layanan pengembalian; } Tipe kedua:
public static <T> t getService (class <? Extends Commonservice> clazz) {t service = (t) serviceMap.get (clazz.getname ()); if (service == null) {service = (t) serviceLocator.getService (clazz.getName ()); serviceMap.put (clazz.getName (), layanan); } layanan pengembalian; } Berikut adalah kelas di mana metode generik berada:
kelas abstrak publik commonservice {private static hashMap <string, commonservice> serviceMap = new HashMap <string, commonservice> (); // Ini adalah definisi metode generik. . } Dua metode generik ini hanya memiliki tanda tangan metode yang berbeda dan badan metode persis sama. Jadi apa bedanya?
Mari kita gunakan dan Anda akan tahu bedanya.
Gunakan metode generik pertama:
Public Class Main {public static void main (string [] args) {noticeservice neticeservice = commonservice.getService (noticeservice.class); // Gunakan metode generik pertama dengan benar tanpa mengkompilasi kesalahan. Pemberitahuan Pemberitahuan Noticeservice = Commonservice.getService (Userservice.class); // Jika Anda menggunakan metode generik pertama secara tidak benar, kesalahan kompilasi akan terjadi. }} Gunakan metode generik kedua:
Public Class Main {public static void main (String [] args) {noticeservice neticeservice = commonservice.getService (noticeservice.class); // Gunakan metode generik kedua dengan benar, tidak akan ada kesalahan kompilasi, logikanya benar, dan tidak akan ada pengecualian selama runtime. Pemberitahuan NotesService = Commonservice.getService (Userservice.class); // Jika Anda menggunakan metode generik kedua secara tidak benar, tidak akan ada kesalahan kompilasi, tetapi logikanya salah, dan pengecualian akan terjadi selama runtime, yang berbahaya! }}Sekarang saya tahu perbedaan antara dua metode generik yang sangat mirip ini?