1. returnbeyan

Java yöntemleri hakkında zaten her şeyi öğrendiğinizi mi düşünüyorsunuz? Bildiğini sandığın ne varsa, hala yarısını bilmiyorsun.

Basit bir şeyle başlayalım. Örneğin, Java'nın onu çağıran yöntemi anında sonlandırmanıza izin veren bir dönüş ifadesi vardır. İşte açıklama:

return;

Çok basit: tek kelime returnve ardından noktalı virgül. Program bu ifadeyi yürütür yürütmez, geçerli yöntemden hemen çıkılır ve çağrı devam eder.

returnYöntemde çağrılırsa , mainyöntem mainve onunla birlikte tüm program hemen sona erecektir.

Örnek:

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);
   }
}


Yöntem fill , geçirilen dizinin bir bölümünü value.
Dizinin doldurulacak kısmı from ve indeksleri ile tanımlanır to.  Dizinin uzunluğundan  küçükse
veya büyükse , yöntem hemen sonlandırılır.from0to

Yukarıdaki program, fillkendisine iletilen diziyi ile dolduran bir yönteme sahiptir value. Tüm diziyi doldurmaz, yalnızca fromve indeksleri tarafından belirtilen kısmı doldurur to.

Metodun başında fill , geçirilen değerlerin geçerli olup olmadığı kontrol edilir. from0'dan küçükse veya dizinin to uzunluğundan büyükse, yöntem fillhemen sonlandırılır (bir returnifade yürütür).

Bu returnifade yararlıdır: Java'daki hemen hemen her yöntemin bir tane vardır ve işte nedeni budur.



2. Sonuç veren yöntemler,void

Bir keresinde ifadeler olduğunu ve ifadeler olduğunu anladığımızı hatırlayın . Bir ifade, ifadeden farklı olarak, bir yerde kullanılabilecek bir değere sahiptir.

Ve Java'da yöntemler bir değere sahip olabilir . Ve bu çok iyi bir haber: yöntemler yalnızca girdi parametrelerine dayalı olarak bir şeyler yapmakla kalmaz, örneğin bir şeyi değerlendirmek ve hesaplamanın sonucunu döndürmek için de kullanılabilir .

Bu arada, zaten bu tür yöntemlerle karşılaştınız:

double delta = Math.abs(d1 - d2);
Yöntem abs()bir çift döndürür
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Yöntem nextInt()bir döndürürint
String str = "Hello";
String s2 = str.toUpperCase();

Yöntem toUpperCase()bir döndürürString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Yöntem copyOf()bir döndürürint[]

Her yöntem, önceden belirlenmiş bir türden yalnızca bir değer döndürebilir. Dönüş türü, yöntem bildirildiğinde belirlenir:

public static Type name(parameters)
{
  method body
}

name Yöntemin adı nerede , parameters yöntem parametrelerinin listesi ve type yöntemin döndürdüğü sonucun türü.

Hiçbir şey döndürmeyen yöntemler için özel bir yer tutucu türü vardır: void.

Kendi yönteminizi mi yazıyorsunuz ve çağıran yönteme hiçbir şey döndürmek istemiyor musunuz? Sadece yöntemin türünü olarak bildirin voidve sorun çözüldü. Java'da bunun gibi birçok yöntem de vardır.


3. Sonuç döndürme

Bir hesaplamanın sonucunu döndüren bir yöntemi nasıl bildireceğimizi yeni bulduk, ancak bu sonucu yöntemin kendisinde nasıl elde ederiz?

Açıklama returnbize burada bir kez daha yardımcı oluyor. Bir yöntemden sonuç iletmek şuna benzer:

return value;

returnYöntemi hemen sonlandıran bir ifade nerede ? Ve, value yöntemin, çağrı yönteminden çıktığı zaman ona döndürdüğü değerdir. türü, yöntem bildiriminde belirtilenle valueeşleşmelidir .type

Örnek 1. Yöntem, iki sayının minimumunu hesaplar:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Yöntem, iki sayının en azını döndürür. İade edilirse Aksi

takdirde iadea < b
a

b

Örnek 2. Yöntem, kendisine iletilen dizeyi niki kez çoğaltır:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
Yöntem iki parametre alır — bir dize ve dizenin tekrarlanma sayısı.
Gelecekteki sonuç için boş bir dize oluşturulur.

Yinelemeli bir döngüde times, dizeye bir boşluk ve strdize eklenir result.

Dize, resultyöntemin sonucu olarak döndürülür.

Örnek 3: Yöntem, üçlü işleci kullanarak maksimum iki sayıyı hesaplar:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Yöntem, maksimum iki sayı döndürür.

dönüş (eğer a > b, sonra a, aksi takdirde b)