CodeGym /Kurslar /JAVA 25 SELF /Qaytarılan dəyərlər, return

Qaytarılan dəyərlər, return

JAVA 25 SELF
Səviyyə, Dərs
Mövcuddur

1. Giriş

Gəlin sualla başlayaq: ümumiyyətlə metodun nəsə qaytarmasına niyə ehtiyac var? Niyə hər şeyi metodun daxilində edib nəticəni ekrana çıxarmamaq olar?

Məsələ ondadır ki, çox vaxt biz sadəcə hansısa əməliyyatı icra etməklə kifayətlənmirik, sonradan proqramın digər hissələrində işimizə yarayacaq nəticə əldə etmək istəyirik. Məsələn:

  • Metod iki ədədin cəmini hesablayır və onu qaytarır ki, nəticədən sonrakı hesablamalarda istifadə edə bilək.
  • Metod ədədin cüt olub-olmadığını müəyyənləşdirir və true və ya false qaytarır ki, qərar verə bilək.
  • Metod istifadəçi üçün salamlaşma sətiri qaytarır, biz isə onu hara vermək barədə qərar veririk — ekrana çıxarmaq, fayla yazmaq, şəbəkə ilə göndərmək.

Əgər metodlar həmişə sadəcə nəticəni çap etsəydi, proqramımız tək ssenariyə sərt bağlı olardı və məntiqi yenidən istifadə etmək çətinləşərdi. Qaytarılan dəyər metodları çevik və universal edir.

Bənzətmə

Təsəvvür edin ki, kofe avtomatıdır. Pul atırsınız, düyməni basırsınız — və kofe alırsınız. Əgər avtomat sadəcə yüksək səslə “Qəhvə dəmləndi!” desəydi (amma kofe verməsəydi), sevinməzdiniz. Metodlarda da belədir: bəzən sadəcə “Hazırdır!” eşitmək yox, nəticə almaq istəyirsiniz.

2. Qaytarılan dəyərin tipi: metod nə qaytara bilər

Java-da metod elan edərkən siz qaytarılan dəyərin tipini göstərirsiniz — bu, istənilən tip ola bilər: int, double, String, boolean, massiv, hətta öz sinfinizin obyekti. Əgər metod heç nə qaytarmırsa — void yazırıq.

Sintaksis:

tip_vozvrashchaemogo_znacheniya imyaMetoda(parametry)
{
    // metodun gövdəsi
}
Metodun siqnatürü

Nümunələr:

int sum(int a, int b) 
{
    // int qaytarır
}

String getGreeting(String name) 
{
    // String qaytarır
}

boolean isEven(int number) 
{
    // boolean qaytarır
}

void printHello() 
{
    // heç nə qaytarmır — sadəcə əməliyyat icra edir
}

Vacibdir! Qaytarılan dəyərin tipi metodun “öhdəliyidir”: o, həmin tipdə dəyər qaytarmalıdır. Əgər siz int qaytaracağına söz verib String qaytarırsınızsa — kompilyator buna imkan verməyəcək və proqramı kompilyasiya etməyəcək.

3. return operatoru: dəyəri metoddən necə qaytarmaq olar

Metodun işinin nəticəsini həqiqətən “çölə” ötürmək üçün return operatorundan istifadə olunur. Bu söz belə deyir: “Budur, nəticə — və bununla da mənim işim bitdi”.

int sum(int a, int b) 
{
    int result = a + b;
    return result; // nəticəni qaytarırıq
}
Dəyərin return ilə qaytarılması

Daha qısa da olar:

int sum(int a, int b) 
{
    return a + b;
}

Metod return sətrinə çatanda icranı dayandırır, göstərilən dəyəri qaytarır və onu çağırıldığı yerə ötürür.

Vacibdir: return-dan sonra gələn dəyərin tipi metodun elan olunmuş tipi ilə üst-üstə düşməlidir.

4. Qaytarılan dəyərin istifadəsi: onu hara tətbiq etməli?

Metod dəyər qaytaranda siz onu belə edə bilərsiniz:

  • Onu dəyişəndə saxlamaq.
  • Birbaşa ifadədə istifadə etmək.
  • Başqa metoda ötürmək.
int result = sum(5, 7); // dəyişəndə saxlayırıq
System.out.println(result); // nəticəni çıxışa veririk

System.out.println(sum(10, 20)); // nəticəni dərhal çıxışa veririk

if (isEven(42)) 
{
    System.out.println("Ədəd cütdür!");
}

Nümunə: sətir qaytaran metod

String getGreeting(String name) 
{
    return "Salam, " + name + "!";
}

// İstifadə:
String greeting = getGreeting("Alisa");
System.out.println(greeting); // Salam, Alisa!

5. Təcrübə: qaytarılan dəyərlə metod nümunələri

İki ədədin maksimumunu qaytaran metod

int max(int a, int b) 
{
    if (a > b) 
    {
        return a;
    } 
    else 
    {
        return b;
    }
}

Əgər artıq ternar operatoru mənimsəmisinizsə, daha da qısa yaza bilərsiniz:

int max(int a, int b) 
{
    return (a > b) ? a : b;
}

İstifadə:

int maximum = max(10, 25);
System.out.println("Maksimum: " + maximum); // Maksimum: 25

Ədəd cütdürsə, true qaytaran metod

boolean isEven(int number) 
{
    return number % 2 == 0;
}

İstifadə:

if (isEven(18)) 
{
    System.out.println("Ədəd cütdür!");
} 
else 
{
    System.out.println("Ədəd təkdir!");
}

Massiv elementlərinin cəmini qaytaran metod

int sumArray(int[] arr) 
{
    int sum = 0;
    for (int i = 0; i < arr.length; i++) 
    {
        sum += arr[i];
    }
    return sum;
}

İstifadə:

int[] grades = {5, 4, 3, 5, 4};
int total = sumArray(grades);
System.out.println("Qiymətlərin cəmi: " + total);

6. return olan metodu çağıranda nə baş verir

Qaytarılan dəyəri olan metod çağırıldıqda proqramın icrası sanki metodun içinə “daxil olur”, onun kodunu icra edir, return-a çatır, dəyəri qaytarır və onu çağırıldığı yerə qoyur.

Sxematik olaraq:

int a = 2;
int b = 3;
int c = sum(a, b); // burada sum(2, 3) çağrılır, 5 qaytarılır, c 5-ə bərabər olur

Blok-sxem

        graph TD
        A["main"] --> B["sum(a, b)"]
        B --> C[hesablamalar]
        C --> D[return result]
        D -->|nəticə qaytarılır| A
    

7. Faydalı nüanslar

return metodu yekunlaşdırır

Metodda return göründüyü andan metodun icrası dərhal dayandırılır. Ondan sonra yazılan heç nə icra olunmur.

int test()
{
    return 42;
    System.out.println("Bu çap olunmayacaq"); // unreachable
}

return void tipli metodda

void (heç nə qaytarmayan) metodda dəyərsiz return-dan istifadə etmək olar — məsələn, hansısa şərtdə metodu vaxtından əvvəl bitirmək üçün.

void printPositive(int number)
{
    if (number <= 0) 
    {
        System.out.println("Ədəd müsbət deyil!");
        return; // sadəcə metodu tərk edirik
    }
    System.out.println("Ədəd: " + number);
}

8. return ilə işləyərkən tipik səhvlər

Səhv № 1: Bütün yollar dəyər qaytarmır

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    }
    // Bəs number <= 0 olarsa? Return yoxdur!
}
// Səhv: kodun bütün budaqları dəyər qaytarmır

Necə düzəltmək olar: həmişə bütün icra yollarında return nəzərdə tutun.

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    } 
    else if (number < 0) 
    {
        return -1;
    } 
    else 
    {
        return 0;
    }
}

Səhv № 2: Qaytarılan dəyərin tipinin uyğunsuzluğu

int getNumber()
{
    return "42"; // Səhv! Gözlənilən int idi, String deyil
}

Səhv № 3: return-dən sonra return

int test()
{
    return 5;
    System.out.println("Bu icra olunmayacaq"); // unreachable statement
}

Səhv № 4: void-metodda ifadə ilə return

void printSomething()
{
    return 42; // Səhv! void-metod dəyər qaytara bilməz
}

Səhv № 5: Qaytarılan dəyəri görməməzlikdən gəlmək

sum(10, 20); // vəssalam? Nəticə itdi!

Əgər qaytarılan dəyəri istifadə etmirsinizsə, o, sadəcə itir. Onu saxlamağı və ya kod boyunca ötürməyi unutmayın!

Səhv № 6: return-in nəsə çap edəcəyini gözləmək

int result = sum(2, 3);
// return heç nə çap etmir!
// Aydın şəkildə çıxışa vermək lazımdır:
System.out.println(result);
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Fərdi müraciətlər üçün ağıllı köməkçi 🤖
Fərdi müraciətlər üçün ağıllı köməkçi 🤖
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Oyun viktorinası üçün ədədlərin cüt və tək olmasını yoxlayan detektor ❓
Oyun viktorinası üçün ədədlərin cüt və tək olmasını yoxlayan detektor ❓
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Xal üzrə yarış qalibinin seçimi 🏆
Xal üzrə yarış qalibinin seçimi 🏆
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Tələbənin bütün testlər üzrə ümumi balının hesablanması 📚
Tələbənin bütün testlər üzrə ümumi balının hesablanması 📚
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION