"ตกลง มาลองวิธีอื่นกัน ฉันจะแสดงให้คุณเห็นว่าวิธีการโทรทำงานอย่างไร จากนั้นคุณลองกลับไปอ่านบทเรียนที่แล้วอีกครั้ง ตกลงไหม"

"มาทำกันเถอะ"

"เยี่ยมมาก ฉันจะบอกคุณเกี่ยวกับการเรียกใช้ฟังก์ชัน/เมธอดและค่าที่ส่งคืน (ค่าส่งคืน)"

"คำสั่งหรือคำสั่งถูกจัดกลุ่มเป็นเมธอดเพื่อให้สามารถดำเนินการเป็นบล็อกเดียว เช่น คำสั่งเชิงซ้อนเดี่ยว ในการทำเช่นนี้ คุณต้องเขียนชื่อเมธอด (ฟังก์ชัน) แล้วระบุอาร์กิวเมนต์ของเมธอดไว้ในวงเล็บ"

ตัวอย่าง
package com.codegym.lesson2;
public class MethodCall
{
    public static void main(String[] args)
    {
         print4("I like to move it, move it.");
    }

    public static void print4(String s)
    {
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
    }
}

"ในตัวอย่างด้านบน เราเขียนฟังก์ชันที่จะแสดงสตริงที่ส่งผ่านบนหน้าจอสี่ครั้ง จากนั้นเราเรียกฟังก์ชันนั้นprint4ในบรรทัดที่ 6"

"เมื่อโปรแกรมถึงบรรทัดที่ 6 มันจะข้ามไปที่บรรทัดที่ 9 กำหนดค่าให้'I like to move it, move it'กับตัวแปร s"

"จากนั้นบรรทัดที่ 11-14 จะถูกดำเนินการ ฟังก์ชันจะเสร็จสิ้น และโปรแกรมจะทำงานต่อในบรรทัดที่ 7"

"ฉันเห็น."

"ไม่เพียงแต่คุณสามารถส่งอาร์กิวเมนต์ (ค่า) ไปยังฟังก์ชันเท่านั้น ฟังก์ชันยังสามารถส่งคืนผลลัพธ์ของงาน (ค่าที่ส่งคืน) ซึ่งทำได้ด้วยการส่งคืนคีย์เวิร์ด นี่คือลักษณะที่ปรากฏ:"

ตัวอย่างที่ 1
กำหนดจำนวนขั้นต่ำสองตัว
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int m = min(a, b);
      System.out.println("The minimum is "+ m);
   }

   public static int min(int c, int d)
   {
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      return m2;
   }
}
นี่คือวิธีการทำงาน:
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int c = a, d = b;
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      int m = m2;
      System.out.println("The minimum is "+ m);
   }
}

"ฉันคิดว่ามันเริ่มสมเหตุสมผลแล้ว! โค้ดในคอลัมน์ซ้ายและขวาเหมือนกันจริงๆ เพียงแต่ว่าโค้ดทางซ้ายมีฟังก์ชันแบบสแตนด์อโลน"

"ฟังก์ชันจะคำนวณค่าหนึ่งๆ และใช้ return statement เพื่อส่งผ่านค่านั้นไปยังอะไรก็ตามที่เรียกมัน อย่างน้อยฉันก็เห็นอย่างนั้น"

"และคุณพูดถูก!"

"แต่ประเภทความว่างเปล่านี้คืออะไร?"

"บางฟังก์ชันทำบางอย่างโดยไม่ต้องคำนวณหรือส่งคืนค่าใดๆ เช่นmain() method ของเรา ประเภทการส่งคืนพิเศษ - void - ถูกสร้างขึ้นสำหรับฟังก์ชันดังกล่าว"

"ทำไมไม่ประกาศอะไรเลยถ้าฟังก์ชันไม่ส่งคืนอะไรเลย"

"จำได้ไหมว่าเราประกาศตัวแปรอย่างไร พิมพ์และชื่อ สำหรับฟังก์ชัน เราประกาศประเภท ชื่อ และวงเล็บ ชื่อฟังก์ชันตามด้วยวงเล็บคือวิธีที่คุณเรียกใช้ฟังก์ชัน"

"ดังนั้น การประดิษฐ์ 'ประเภทโมฆะ' จึงง่ายกว่าการแบ่งฟังก์ชันออกเป็นสองประเภท - ประเภทที่ส่งคืนค่าและประเภทที่ไม่คืนค่า"

"ถูกต้อง! คุณฉลาดจริงๆ ลูกชายของฉัน"

"เราจะส่งคืนประเภทโมฆะได้อย่างไร"

"เราไม่ทำ มันทำงานแบบนี้เมื่อเรียกใช้คำสั่ง return เครื่อง Java จะคำนวณค่าของนิพจน์ทางด้านขวาของคำว่า 'return' เก็บค่านี้ไว้ในส่วนพิเศษของหน่วยความจำ และสิ้นสุดทันที ฟังก์ชันค่าที่เก็บไว้จะถูกใช้เมื่อเรียกใช้ฟังก์ชันซึ่งเป็นผลลัพธ์ของการเรียกฟังก์ชันคุณสามารถดูได้จากตัวอย่างที่ฉันให้ไว้ก่อนหน้านี้"

"คุณหมายถึงส่วนที่แปลง int m = min(a, b) เป็น m = m2 ใช่ไหม"

"ใช่ หลังจากฟังก์ชันเสร็จสิ้น ทุกอย่างจะทำงานราวกับว่าค่าส่งคืนของฟังก์ชันถูกเขียนแทนที่ทำซ้ำวลีนี้ในใจของคุณ และดูโค้ดในตัวอย่างสุดท้าย "

"ฉันคิดว่ามันดูเหมือนง่ายเท่านั้น จริงๆแล้วมันยาก ฉันเข้าใจเพียงบางส่วนเท่านั้น"

"ไม่เป็นไรในการทดลองครั้งแรก คุณจะเข้าใจได้เฉพาะสิ่งที่คุณรู้อยู่แล้วยิ่งคุณไม่เข้าใจอะไรมากเท่าไหร่ คุณก็ยิ่งจมดิ่งลงไปในสิ่งใหม่มากขึ้นเท่านั้น และผลลัพธ์ของคุณก็จะยิ่งดีขึ้นเท่านั้น มันจะชัดเจนขึ้นเมื่อเวลาผ่านไป "

“ก็ถ้าว่างั้นก็ไปกันต่อเถอะ”