1. returnคำสั่ง

คิดว่าคุณได้เรียนรู้ทั้งหมดเกี่ยวกับวิธี Java แล้วหรือยัง อะไรก็ตามที่คุณคิดว่าคุณรู้ คุณก็ยังรู้ไม่ถึงครึ่งของสิ่งนั้น

เริ่มจากอะไรง่ายๆ ตัวอย่างเช่น Java มี คำสั่ง returnที่ให้คุณยุติเมธอดที่เรียกใช้ทันที นี่คือคำสั่ง:

return;

มันง่าย: คำเดียวreturnตามด้วยเครื่องหมายอัฒภาค ทันทีที่โปรแกรมดำเนินการคำสั่งนี้ เมธอดปัจจุบันจะหยุดทำงานทันที และการโทรจะดำเนินต่อไป

หากreturnมีการเรียกใช้เมธอดmainเมธอดmainจะสิ้นสุดทันทีและด้วยโปรแกรมทั้งหมด

ตัวอย่าง:

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


เมธอดfill เติมส่วนหนึ่งของอาร์เรย์ที่ส่งผ่านด้วยvalue.
ส่วนของอาร์เรย์ที่จะเติมถูกกำหนดโดยดัชนีfrom และ ถ้า น้อยกว่าหรือ มากกว่าความยาวของอาร์เรย์ เมธอดจะยุติทันที to
from0to

โปรแกรมด้านบนมีfillวิธีการเติมอาร์เรย์ที่ส่งผ่านไปยังvalueโปรแกรม มันไม่ได้เติมอาร์เรย์ ทั้งหมดเฉพาะส่วนที่ระบุโดยดัชนีfromและto

ที่จุดเริ่มต้นของfill เมธอด ค่าที่ส่งผ่านจะถูกตรวจสอบเพื่อให้แน่ใจว่าถูกต้อง ถ้าfromน้อยกว่า 0 หรือถ้าto มากกว่าความยาวของอาร์เรย์ เมธอดจะfillยุติทันที (ดำเนินreturnการคำสั่ง)

ข้อความ นี้returnมีประโยชน์: แทบทุกเมธอดใน Java จะมีหนึ่งเมธอด และนี่คือเหตุผล



2. วิธีการที่มีผลvoid

จำไว้ว่าครั้งหนึ่งเราพบว่า มีข้อความสั่ง และมีนิพจน์ การแสดงออกซึ่งแตกต่างจากคำสั่งมีค่าที่สามารถใช้ได้ที่ไหนสักแห่ง

และใน Java เมธอดสามารถมีค่าได้ และนี่เป็นข่าวดีมาก: เมธอดไม่เพียง แต่สามารถทำบางสิ่งตามพารามิเตอร์อินพุตเท่านั้น แต่ยังสามารถประเมินบางสิ่งและส่งคืนผลลัพธ์ของการคำนวณได้อีก ด้วย

คุณได้พบวิธีการดังกล่าวแล้ว:

double delta = Math.abs(d1 - d2);
เมธอดabs()ส่งคืนค่าสองเท่า
Scanner console = new Scanner(System.in);
int x = console.nextInt();

เมธอดnextInt()จะคืนค่า anint
String str = "Hello";
String s2 = str.toUpperCase();

เมธอดtoUpperCase()ส่งคืน aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

เมธอดcopyOf()จะคืนค่า anint[]

แต่ละเมธอดสามารถคืนค่าหนึ่งค่าของประเภทที่กำหนดไว้ล่วงหน้าได้เพียงหนึ่งค่าเท่านั้น ประเภทการส่งคืนถูกกำหนดเมื่อมีการประกาศเมธอด:

public static Type name(parameters)
{
  method body
}

name ชื่อของเมธอดอยู่ที่ไหนparameters คือรายการของพารามิเตอร์เมธอด และtype เป็นชนิดของผลลัพธ์ที่เมธอดส่งคืน

สำหรับเมธอดที่ไม่ส่งคืนอะไรเลย มีตัวยึดประเภทพิเศษvoid:

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


3. ส่งคืนผลลัพธ์

เราเพิ่งทราบวิธีการประกาศวิธีการที่ส่งคืนผลลัพธ์ของการคำนวณ แต่เราจะส่งผลลัพธ์นี้ในวิธีการเองได้อย่างไร

แถลงการณ์returnช่วยเราที่นี่อีกครั้ง การส่งผ่านผลลัพธ์จากเมธอดมีลักษณะดังนี้:

return value;

returnคำสั่งที่ยุติวิธีการทันทีอยู่ที่ไหน และvalue เป็นค่าที่เมธอดส่งกลับเมธอดการโทรเมื่อจบการทำงาน ประเภทของvalueต้องตรงกับtypeที่ระบุในการประกาศเมธอด

ตัวอย่างที่ 1 วิธีการคำนวณจำนวนขั้นต่ำสองจำนวน:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
เมธอดส่งคืนค่าต่ำสุดของตัวเลขสองตัว

ถ้าa < b
กลับa
มิฉะนั้น
กลับb

ตัวอย่างที่ 2 เมธอดทำซ้ำสตริงที่ส่งผ่านไปยังnครั้ง:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
วิธีการใช้สองพารามิเตอร์ — สตริงและจำนวนครั้งที่ควรทำซ้ำสตริง
สตริงว่างถูกสร้างขึ้นสำหรับผลลัพธ์ในอนาคต

ในลูปที่มีtimesการวนซ้ำ ช่องว่างและstrสตริงจะถูกเพิ่มเข้าไปในresultสตริง

สตริงresultจะถูกส่งกลับเป็นผลลัพธ์ของเมธอด

ตัวอย่างที่ 3: วิธีการคำนวณจำนวนสูงสุดสองตัวโดยใช้ตัวดำเนินการ ternary:

int max(int a, int b)
{
   return (a > b ? a : b);
}
เมธอดส่งคืนค่าสูงสุดสองจำนวน

กลับ (ถ้าa > bแล้วaมิฉะนั้นb)