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

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

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

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

ตัวอย่าง
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);
   }
}
1
งาน
Java Syntax,  ระดับบทเรียน
ล็อค
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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