Előadásrészlet egy mentorral a Codegym University tanfolyam részeként. Jelentkezzen a teljes tanfolyamra.


– Már megint te, Amigo. Nos, szia.

– Úgy tűnik, nem örülsz, hogy látlak, Diego?

"Az a benyomásom, hogy azt hiszed, már mindent megtanultál, amit a Java módszereiről tudni lehet."

– Ó, én nem…

"Nem hinném! Még a felét sem tudod."

"Persze, nem haragszom...

"Oké, elég a beszédből. Ideje elkezdeni. És kezdjük valami egyszerűvel. Például azzal, hogy a Java-nak van return utasítása. Lehetővé teszi, hogy azonnal leállítson egy metódust, amelyben meghívják. Íme az utasítás:

return;

"Egyszerű: a magányos szót returnpontosvessző követi. Amint a program végrehajtja ezt az utasítást, az aktuális metódus kilép, és a hívási metódus folytatódik.

"Ha returna metódusban meghívásra kerül main, akkor a mainmetódus azonnal véget ér, és vele az egész program.

Példa:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {
     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}
A fill metódus kitölti az átadott tömb egy részét -val value.

A tömb kitöltendő részét a from és az indexek határozzák meg to.

Ha from kisebb, mint 0vagy ha to  nagyobb, mint a tömb hossza, akkor a metódus azonnal leáll.

"A fenti programnak van egy fillmetódusa, ami a neki átadott tömböt tölti ki a -val value. Nem tölti ki a teljes tömböt, csak az indexek fromés az indexek által meghatározott részt to.

"A metódus elején fillaz átadott értékeket ellenőrzik, hogy érvényesek-e. Ha fromkisebb, mint 0, vagy ha tonagyobb, mint a tömb hossza, akkor a fillmetódus azonnal leáll ( returnutasítást hajt végre)."

– Értem. Csak ennyit tesz ez a kijelentés?

"Valójában ez az returnállítás hasznosabb, mint gondolnád. Annyira hasznos, hogy szinte minden Java metódusban megtalálható. Most pedig elvezetem Önt annak megértéséhez, hogy miért van ez így.

Eredményes módszerek,void

"Valószínűleg emlékszel arra, hogy vannak kijelentések, és vannak kifejezések . Mi a különbség köztük?"

"Ha nem tévedek, egy kifejezésnek, ellentétben a kijelentéssel, van jelentése, ami valahol használható."

"Helyes. És a Java-ban a metódusoknak is lehet értéke . És ez nagyon jó hír: a metódusok nem csak a bemeneti paraméterek alapján képesek valamit tenni, hanem például kiértékelni is valamit, és visszaadni az eredményt a számítás .

"Mellesleg, már találkozott ilyen módszerekkel:

double delta = Math.abs(d1 - d2);
A abs()metódus duplát ad vissza
Scanner console = new Scanner(System.in);
int x = console.nextInt();

A nextInt()metódus egyint
String str = "Hello";
String s2 = str.toUpperCase();
A toUpperCase()metódus visszaadja aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

A copyOf()metódus egyint[]

"Minden metódus csak egy előre meghatározott típusú értéket adhat vissza . A visszatérési típus a metódus deklarálásakor kerül meghatározásra:

public static Type name(parameters)
{
  method body
}

Ahol namea metódus neve, parametersa metódusparaméterek listája és typea metódus által visszaadott eredmény típusa.

Azokhoz a metódusokhoz, amelyek semmit sem adnak vissza, van egy speciális helyőrző típus: void.

"Más szóval, ha megírom a metódusomat, és nem akarok semmit visszaadni, akkor a metódus típusát deklarálom, hogy void, és ennyi?"

"Igen. És azt is el kell mondanom, hogy a Java-nak elég sok ilyen módszere van.

Eredmény visszaadása

"Kitaláltam, hogyan lehet deklarálni egy olyan metódust, amely egy számítás/munka eredményét adja vissza. Hogyan adjam vissza az eredményt magából a metódusból?"

"Ez egy jogos kérdés. Az returnállítás ismét segít nekünk. Egy módszer eredményének átadása így néz ki:

return value;

"Az returnutasítás azonnal leállítja a metódust. És valuea metódusnak vissza kell térnie a hívó metódushoz, amikor kilép. A típusnak valuemeg kell egyeznie a Typemetódus deklarációjában megadottal. Íme néhány példa a tanultak megerősítésére:

1. példa: A módszer kiszámítja a két szám minimumát:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
A metódus a minimum két számot adja vissza.

Ha a < b
visszaküld a
Ellenkező esetben
visszab

2. példa: A metódus megduplázza a neki átadott karakterláncot n:

String multiple(String str, int times)
{
   String result = "";

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
A metódus két paramétert vesz igénybe – egy karakterláncot és azt, hogy hányszor kell a karakterláncot megismételni.
Egy üres karakterlánc jön létre a jövőbeni eredményhez.

Az iterációkkal rendelkező ciklusban timesegy szóköz és a karakterlánc strhozzáadódik a karakterlánchoz result.
A karakterlánc resulta metódus eredményeként kerül visszaadásra.

3. példa: A módszer a maximum két számot számítja ki a háromtagú operátor segítségével:

int max(int a, int b)
{
   return (a > b ? a : b);
}
A metódus maximum két számot ad vissza.

vissza (ha a > b, akkor a, különben b)

"Kiváló. A módszerek az új szupererőm!"

"Csak ha eleget gyakorolsz a gyakorlati feladatokban. Újra és újra."