1. Maringi argumentasi

Lan saiki kesenengan diwiwiti. Sampeyan bisa uga wis ngerti saka metode kaya ngono System.out.println(), kita bisa ngirim argumen menyang metode. Sawise kita mlebu ing metode kasebut, kita deleng minangka paramèter. Nyatane, paramèter nambah banget keuntungan sing kita entuk saka nggawe lan nggunakake metode.

Kepiye cara ngumumake metode kanthi paramèter? Iku bener cukup prasaja:

public static void name(parameters)
{
  method body
}

Where name jeneng unik saka cara lan method body makili printah sing nggawe cara. Lan parameters minangka placeholder kanggo paramèter metode, dipisahake karo koma. Ayo diterangake cithakan iki kanthi luwih rinci:

public static void name(Type1 name1, Type2 name2, Type3 name3)
{
  method body
}

Tuladha:

Kode Panjelasan
public static void print(String str)
{
}
Cara kasebut printdiumumake kanthi parameter:
String str
public static void print(String str, int count)
{
}
Cara kasebut printdiumumake kanthi rong paramèter:
String str
int count
public static void write(int x, int y)
{
}
Cara kasebut writediumumake kanthi rong paramèter:
int x
int y

Yen kita ora pengin cara duwe paramèter, kita mung ninggalake kurung kosong.

Parameter minangka variabel khusus ing sawijining metode. Kanthi bantuan, sampeyan bisa ngirim macem-macem nilai kanggo metode kasebut nalika diarani.

Contone, ayo nulis metode sing nampilake senar teks kaping pirang-pirang.

Sampeyan wis ngerti carane nulis kode kanggo nampilake senar ing layar kaping pirang-pirang. Nanging string apa sing kudu dicithak? Lan ping pira? Sing apa kita kudu paramèter kanggo.

Kode sing nindakake iki bakal katon kaya iki:

Kode Panjelasan
class Solution
{
   public static void printLines(String text, int count)
   {
     for (int i = 0; i < count; i++)
       System.out.println(text);
   }

   public static void main(String[] args)
   {
     printLines("Hi", 10);
     printLines("Bye", 20);
   }
}


Kita ngumumake printLinesmetode kasebut kanthi paramèter ing ngisor iki:
String text, int count
Cara nampilake text countkaping String





Kita nelpon printLinesmetode kanthi macem-macem paramèter

Saben cara diarani, paramèter kasebut diwenehi nilai sing dilewati, lan mung banjur miwiti nglakokaké perintah ing cara kasebut.


2. Argumentasi

Aku kaya kanggo tarik manungsa waé sethitik liyane kanggo nelpon cara karo paramèter.

Nilai sing diterusake menyang metode kasebut biasane diarani argumen nalika diterusake menyang metode kasebut.

Ayo ndeleng conto liyane:

Kode Panjelasan
class Solution
{
   public static void printLines(String text, int count)
   {
     for (int i = 0; i < count; i++)
       System.out.println(text);
   }

   public static void main(String[] args)
   {
     printLines("Hi", 10);
     printLines("Bye", 20);
   }
}


Kita ngumumake printLinesmetode kasebut kanthi paramèter ing ngisor iki:
String text, int count
Cara nampilake String text countkaping




Kita nelpon printLinesmetode kanthi argumen ing ngisor iki:
text = "Hi"; count = 10;
text = "Bye"; count = 20;

Nalika printLines cara kasebut pisanan diarani, paramèter kasebut diwenehi nilai ing ngisor iki:
String text = "Hi", int count = 10.

Nalika printLinescara kasebut diarani kaping pindho, paramèter kasebut diwenehi nilai sing beda:
String text = "Bye", int count = 20.

Parameter ora luwih lan ora kurang saka variabel sing diwenehi nilai tartamtu nalika metode diarani. Nilai-nilai "Hi", "Bye", 10, lan 20dhewe diarani argumen."


3. Konflik jeneng variabel nalika nelpon cara

Variabel bisa digunakake minangka argumen metode. Iki prasaja lan bisa dingerteni, nanging bisa nyebabake sawetara kesulitan. Ayo bali menyang conto sing padha, nanging wektu iki kita bakal mindhah argumen menyang variabel sing kapisah:

Kode Panjelasan
class Solution
{
   public static void printLines(String text, int count)
   {
     for (int i = 0; i < count; i++)
       System.out.print(text);
   }

   public static void main(String[] args)
   {
     String str = "Hi";
     int n = 10;
     printLines(str, n);
   }
}


Kita ngumumake printLinesmetode kasebut kanthi paramèter ing ngisor iki:
String text, int count
Cara nampilake String text countkaping







Kita nelpon printLinesmetode kanthi argumen ing ngisor iki:
text = str;
count = n;

Supaya adoh, apik banget: kita duwe strvariabel. Nilai kasebut ditugasake menyang textparameter nalika metode kasebut diarani. Kita duwe nvariabel. Nilai kasebut ditugasake menyang countparameter nalika metode kasebut diarani." Nganti saiki, kabeh wis jelas.

Saiki ayo ngganti jeneng variabel kita ing mainmetode:

Kode Panjelasan
class Solution
{
   public static void printLines(String text, int count)
   {
     for (int i = 0; i < count; i++)
       System.out.print(text);
   }

   public static void main(String[] args)
   {
     String text = "Hi";
     int count = 10;
     printLines(text, count);
   }
}


Kita ngumumake printLinesmetode kasebut kanthi paramèter ing ngisor iki:
String text, int count
Cara nampilake String text countkaping







Kita nelpon printLinesmetode kanthi argumen ing ngisor iki:
text = text;
count = count;

Pay manungsa waé kanggo rong perkara

Pisanan: kita duwe variabel kanthi jeneng sing padha ing macem-macem cara. Iki minangka variabel sing beda-beda (kita sengaja nggambarake kanthi nggunakake warna sing beda). Kabeh kerjane padha karo conto sadurunge, ing ngendi variabel ing mainmetode kasebut dijenengi strlan n.

Kapindho: Ora ana kedadeyan gaib nalika metode kasebut diarani. Parameter kasebut mung diwenehi nilai argumen. Preduli saka apa iku nomer, strings, variabel, utawa ekspresi.

Sawise ngganti jeneng variabel ing metode utama, ora ana sing diganti. Padha variabel beda ing cara beda sadurunge, lan supaya padha tetep. Ora ana hubungan sihir antarane variabel text lan text .



4. Maringaken referensi kanggo cara

Muga-muga sampeyan ngerti kabeh saka pawulangan sadurunge, amarga saiki kita bakal mriksa maneh argumentasi kanggo metode, mung kita bakal nyilem luwih jero.

Kaya sing wis dingerteni, sawetara variabel Java ora nyimpen nilai kasebut dhewe, nanging minangka referensi, yaiku alamat blok memori sing ana nilai kasebut. Iki carane variabel string lan variabel array bisa digunakake.

Nalika sampeyan nemtokake variabel array liyane menyang variabel array, apa sing kedadeyan? Bener. Loro variabel kasebut wiwit ngrujuk menyang papan sing padha ing memori:

Maringaken referensi kanggo cara

Lan apa sing kedadeyan yen salah sawijining variabel kasebut minangka parameter metode?

Kode Panjelasan
class Solution
{
   public static void printArraySum(int[] data)
   {
     int sum = 0;
     for (int i = 0; i < data.length; i++)
       sum = sum + data[i];
     System.out.println(sum);
   }
   
   public static void main(String[] args)
   {
     int[] months = {31, 28, 31, 30, 31, 30, 31, 31, 30};
     printArraySum(months);
   }
}


Cara printArraySumngetung jumlah nomer ing larik liwati lan nampilake ing layar

Persis kedadeyan sing padha: data parameter kasebut bakal ngemot referensi menyang area memori sing padha karo monthsvariabel kasebut. Nalika metode kasebut diarani, ana tugas sing prasaja: .data = months

Lan wiwit loro variabel nuduhake area memori sing padha nyimpen integer, banjur cara printArraySum ora mung bisa maca nilai saka Uploaded, nanging uga ngganti!

Contone, kita bisa nulis cara dhewe sing ngisi array rong dimensi kanthi nilai sing padha. Iki bisa uga katon:

Kode Panjelasan
class Solution
{
   public static void fill(int[][] data, int value)
   {
     for (int i = 0; i < data.length; i++)
     {
       for (int j = 0; j < data[i].length; j++)
         data[i][j] = value;
     }
  }

   public static void main(String[] args)
   {
     int[][] months = {{31, 28}, {31, 30, 31}, {30, 31, 31}};
     fill (months, 8);
   }
}


Cara kasebut fill ngulang saben sel ing array rong dimensi sing dilewati lan ditugasake value.








Kita nggawe array rong dimensi.
Kita ngisi kabeh array kanthi nomer kasebut 8.


5. Metode kanthi jeneng sing padha

Saiki ayo bali menyang jeneng metode maneh.

Standar Jawa mbutuhake kabeh cara ing kelas sing padha duwe jeneng unik. Ing tembung liyane, iku mokal kanggo ngumumake rong cara identik jeneng ing kelas padha.

Nalika cara dibandhingake kanggo padha, ora mung jeneng sing dianggep, nanging uga jinis paramèter ! Elinga yen jeneng paramèter ora dianggep . Tuladha:

Kode Panjelasan
void fill(int[] data, int value) {
}
void fill(int[][] data, int value) {
}
void fill(int[][][] data, int value)  {
}
Telung cara iki minangka cara sing beda . Padha bisa diumumake ing kelas sing padha.
void print(String str) {
}
void print(String str, String str2) {
}
void print(int val) {
}
void print(double val) {
}
void print() {
}
Saben limang cara iki dianggep beda . Padha bisa diumumake ing kelas sing padha.
void sum(int x, int y) {
}
void sum(int data, int value) {
}
Cara loro iki dianggep padha , tegese ora bisa diumumake ing kelas sing padha.

Yagene sawetara cara dianggep padha , nanging liyane beda ? Lan kenapa jeneng parameter ora dianggep nalika nemtokake keunikan metode?

Yagene keunikan perlu banget? Masalahe yaiku nalika kompiler nyusun program, mesthine kudu ngerti cara sing sampeyan pengin nelpon ing papan apa wae.

Contone, yen sampeyan nulis , compiler pinter lan bakal gampang nganakke sing arep nelpon cara kene karo parameter.System.out.println("Hi")println()String

Nanging yen sampeyan nulis , kompiler bakal weruh telpon menyang metode kanthi parameter.System.out.println(1.0)println()double

Nalika metode diarani, compiler njamin yen jinis argumen cocog karo jinis paramèter. Iku ora mbayar manungsa waé kanggo jeneng bantahan. Ing Jawa, jeneng parameter ora mbantu compiler nemtokake cara kanggo nelpon. Lan mulane dheweke ora dianggep nalika nemtokake keunikan metode.

Jeneng metode lan jinis paramèter kasebut diarani tandha metode . Tuladhane,sum(int, int)

Saben kelas kudu duwe metode kanthi teken unik tinimbang metode kanthi jeneng unik.