1. Melewati argumen
Dan sekarang kesenangan dimulai. Anda mungkin sudah tahu dari metode seperti System.out.println()
itu kita bisa meneruskan argumen ke metode. Begitu kita berada di dalam metode, kita menyebutnya sebagai parameter. Faktanya, parameter sangat meningkatkan manfaat yang kita peroleh dari membuat dan menggunakan metode.
Bagaimana kita mendeklarasikan metode dengan parameter? Ini sebenarnya cukup sederhana:
public static void name(parameters)
{
method body
}
Di mana name
nama unik dari metode tersebut dan method body
mewakili perintah yang membentuk metode tersebut. Dan parameters
merupakan placeholder untuk parameter metode, dipisahkan dengan koma. Mari jelaskan template ini lebih detail:
public static void name(Type1 name1, Type2 name2, Type3 name3)
{
method body
}
Contoh:
Kode | Penjelasan |
---|---|
|
Metode ini print dideklarasikan dengan parameter:String str |
|
Metode ini print dideklarasikan dengan dua parameter:String str int count |
|
Metode ini write dideklarasikan dengan dua parameter:int x int y |
Jika kita tidak ingin metode memiliki parameter, maka kita biarkan tanda kurungnya kosong.
Parameter adalah variabel khusus dalam suatu metode. Dengan bantuan mereka, Anda dapat meneruskan berbagai nilai ke metode saat dipanggil.
Sebagai contoh, mari kita menulis metode yang menampilkan string teks beberapa kali.
Anda sudah tahu cara menulis kode untuk menampilkan string di layar beberapa kali. Tapi string mana yang harus Anda cetak? Dan berapa kali? Untuk itulah kami membutuhkan parameter.
Kode yang melakukan ini akan terlihat seperti ini:
Kode | Penjelasan |
---|---|
|
Kami mendeklarasikan printLines metode dengan parameter berikut: String text , int count Metode menampilkan text count waktu String Kami memanggil printLines metode dengan berbagai parameter |
Setiap kali sebuah metode dipanggil, parameternya diberi nilai yang diteruskan, dan baru setelah itu kita mulai menjalankan perintah di dalam metode tersebut.
2. Argumen
Saya ingin lebih menarik perhatian Anda untuk memanggil metode dengan parameter.
Nilai yang diteruskan ke metode biasanya disebut argumen saat diteruskan ke metode.
Mari kita lihat contoh lain:
Kode | Penjelasan |
---|---|
|
Kami mendeklarasikan printLines metode dengan parameter berikut: String text , int count Metode menampilkan text count waktu String Kami memanggil printLines metode dengan argumen berikut:text = "Hi"; count = 10; text = "Bye"; count = 20; |
Saat printLines
metode dipanggil untuk pertama kali, parameternya diberi nilai berikut: String text = "Hi", int count = 10
.
Ketika printLines
metode dipanggil untuk kedua kalinya, parameternya diberi nilai yang berbeda: String text = "Bye", int count = 20
.
Parameter tidak lebih dan tidak kurang dari variabel yang diberi nilai tertentu saat metode dipanggil. Nilai "Hi"
, "Bye"
, 10
, dan 20
itu sendiri disebut argumen."
3. Nama variabel yang bertentangan saat memanggil metode
Variabel dapat digunakan sebagai argumen metode. Ini sederhana dan dapat dimengerti, tetapi berpotensi menimbulkan beberapa kesulitan. Mari kita kembali ke contoh yang sama, tapi kali ini kita akan memindahkan argumen ke dalam variabel terpisah:
Kode | Penjelasan |
---|---|
|
Kami mendeklarasikan printLines metode dengan parameter berikut: String text , int count Metode menampilkan text count waktu String Kami memanggil printLines metode dengan argumen berikut:text = str; count = n; |
Sejauh ini, sangat bagus: kami memiliki str
variabel. Nilainya diberikan ke text
parameter saat metode dipanggil. Kami memiliki n
variabel. Nilainya diberikan ke count
parameter saat metode dipanggil." Sejauh ini, semuanya jelas.
Sekarang mari kita ganti nama variabel kita dalam main
metode ini:
Kode | Penjelasan |
---|---|
|
Kami mendeklarasikan printLines metode dengan parameter berikut: String text , int count Metode menampilkan text count waktu String Kami memanggil printLines metode dengan argumen berikut:text = text; count = count; |
Perhatikan dua hal
Pertama: kami memiliki variabel dengan nama yang sama dalam metode yang berbeda. Ini adalah variabel yang berbeda (kami sengaja menggambarkannya menggunakan warna berbeda). Semuanya bekerja sama seperti pada contoh sebelumnya, di mana variabel dalam main
metode diberi nama str
dan n
.
Kedua: Tidak ada yang ajaib terjadi ketika metode ini dipanggil. Parameter hanya diberi nilai argumen. Terlepas dari apakah itu angka, string, variabel, atau ekspresi.
Setelah kami mengganti nama variabel dalam metode utama, tidak ada yang berubah. Mereka adalah variabel yang berbeda dalam metode yang berbeda sebelumnya, dan karenanya tetap ada. Tidak ada hubungan ajaib antara text
dan text
variabel.
4. Melewati referensi ke metode
Saya harap Anda memahami semuanya dari pelajaran sebelumnya, karena sekarang kita akan meninjau kembali argumen yang diteruskan ke metode, hanya saja kita akan menyelami lebih dalam.
Seperti yang telah Anda ketahui, beberapa variabel Java tidak menyimpan nilai itu sendiri, melainkan referensi, yaitu alamat blok memori tempat nilai berada. Ini adalah cara kerja variabel string dan variabel array.
Ketika Anda menetapkan variabel array lain ke variabel array, apa yang terjadi? Itu benar. Kedua variabel mulai merujuk ke ruang yang sama di memori:
Dan apa yang terjadi jika salah satu dari variabel ini adalah parameter metode?
Kode | Penjelasan |
---|---|
|
Metode ini printArraySum menghitung jumlah angka dalam larik yang diteruskan dan menampilkannya di layar |
Hal yang persis sama terjadi: data
parameter akan berisi referensi ke area memori yang sama dengan variabel months
. Saat metode dipanggil, tugas sederhana terjadi: .data = months
Dan karena kedua variabel merujuk ke area memori yang sama yang menyimpan bilangan bulat, maka printArraySum
metode tersebut tidak hanya dapat membaca nilai dari array, tetapi juga mengubahnya!
Sebagai contoh, kita dapat menulis metode kita sendiri yang mengisi array dua dimensi dengan nilai yang sama. Begini tampilannya:
Kode | Penjelasan |
---|---|
|
Metode ini fill mengulangi setiap sel dalam larik dua dimensi yang diteruskan dan menetapkannya value . Kami membuat array dua dimensi. Kami mengisi seluruh array dengan nomor 8 . |
5. Metode dengan nama yang sama
Sekarang mari kembali ke nama metode sekali lagi.
Standar Java mengharuskan semua metode di kelas yang sama memiliki nama yang unik. Dengan kata lain, tidak mungkin mendeklarasikan dua metode dengan nama yang sama di kelas yang sama.
Ketika metode dibandingkan untuk kesamaan, tidak hanya nama yang diperhitungkan, tetapi juga jenis parameternya ! Perhatikan bahwa nama parameter tidak diperhitungkan . Contoh:
Kode | Penjelasan |
---|---|
|
Ketiga metode ini merupakan metode yang berbeda . Mereka dapat dideklarasikan di kelas yang sama. |
|
Masing-masing dari kelima metode ini dianggap berbeda . Mereka dapat dideklarasikan di kelas yang sama. |
|
Kedua metode ini dianggap sama , artinya tidak dapat dideklarasikan dalam kelas yang sama. |
Mengapa beberapa metode dianggap sama , sementara yang lain berbeda ? Dan mengapa nama parameter tidak diperhitungkan saat menentukan keunikan suatu metode?
Mengapa keunikan diperlukan sama sekali? Masalahnya adalah ketika kompiler mengkompilasi sebuah program, ia harus tahu persis metode mana yang ingin Anda panggil di tempat tertentu.
Misalnya, jika Anda menulis , kompilernya pintar dan akan dengan mudah menyimpulkan bahwa Anda bermaksud memanggil metode di sini dengan parameter.System.out.println("Hi")
println()
String
Tetapi jika Anda menulis , kompiler akan melihat panggilan ke metode dengan parameter.System.out.println(1.0)
println()
double
Saat sebuah metode dipanggil, compiler memastikan bahwa tipe argumen cocok dengan tipe parameter. Itu tidak memperhatikan nama argumen. Di Java, nama parameter tidak membantu kompiler menentukan metode mana yang akan dipanggil. Dan itulah mengapa mereka tidak diperhitungkan saat menentukan keunikan suatu metode.
Nama metode dan jenis parameternya disebut tanda tangan metode . Misalnya,sum(int, int)
Setiap kelas harus memiliki metode dengan tanda unik daripada metode dengan nama unik.