"OK, chúng ta hãy thử một cách tiếp cận khác. Tôi sẽ chỉ cho bạn cách hoạt động của các phương thức gọi, và sau đó bạn thử xem lại bài học trước, được chứ?"

"Hãy làm nó."

"Tuyệt. Tôi sẽ cho bạn biết về cách gọi hàm/phương thức và giá trị mà chúng trả về (giá trị trả về)."

"Các lệnh hoặc câu lệnh được nhóm thành các phương thức để chúng có thể được thực thi dưới dạng một khối duy nhất, giống như một lệnh phức tạp duy nhất. Để thực hiện việc này, bạn cần viết tên phương thức (hàm) rồi liệt kê các đối số của phương thức bên trong dấu ngoặc đơn."

Ví dụ
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);
    }
}

"Trong ví dụ trên, chúng ta đã viết một hàm sẽ hiển thị chuỗi đã truyền trên màn hình bốn lần. Sau đó, chúng ta gọi hàm print4ở dòng 6."

"Khi đến dòng 6 chương trình sẽ nhảy đến dòng 9, gán giá trị 'I like to move it, move it'cho biến s."

"Sau đó, các dòng 11-14 sẽ được thực thi. Chức năng sẽ kết thúc và chương trình sẽ tiếp tục ở dòng 7."

"Tôi hiểu rồi."

"Bạn không chỉ có thể chuyển các đối số (giá trị) cho một hàm—một hàm có thể trả về kết quả công việc của nó (giá trị trả về). Điều này được thực hiện với từ khóa return. Đây là giao diện của nó:"

Ví dụ 1.
Xác định số nhỏ nhất của hai số.
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;
   }
}
Đây là cách nó hoạt động:
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);
   }
}

"Tôi nghĩ nó bắt đầu có ý nghĩa rồi! Mã ở cột bên trái và bên phải thực sự giống nhau. Chỉ là mã ở bên trái có một chức năng độc lập."

"Hàm tính toán một giá trị nhất định và sử dụng câu lệnh return để chuyển giá trị đó cho bất kỳ thứ gì được gọi là nó. Ít nhất, đó là cách tôi nhìn nhận về nó."

"Và bạn nói đúng!"

"Nhưng loại khoảng trống này là gì?"

"Một số hàm chỉ làm một việc gì đó mà không tính toán hoặc trả về bất kỳ giá trị nào, chẳng hạn như phương thức main() của chúng tôi . Một kiểu trả về đặc biệt– void – được tạo cho các hàm như vậy."

"Tại sao không khai báo gì cả nếu một chức năng không trả về bất cứ điều gì?"

"Hãy nhớ cách chúng ta khai báo bất kỳ biến nào? Nhập và đặt tên. Đối với các hàm, chúng ta khai báo một loại, tên và dấu ngoặc đơn. Tên hàm theo sau dấu ngoặc đơn là cách bạn gọi hàm."

"Vì vậy, việc phát minh ra một 'loại void' sẽ dễ dàng hơn là chia các hàm thành hai loại – những hàm trả về giá trị và những hàm không trả về?"

"Chính xác! Con thật thông minh, con trai."

"Làm thế nào để chúng tôi trả về một loại khoảng trống?"

"Chúng tôi thì không. Nó hoạt động như thế này. Khi thực hiện câu lệnh return, máy Java sẽ tính toán giá trị của biểu thức ở bên phải của từ 'return', lưu giá trị này vào một phần đặc biệt của bộ nhớ và kết thúc ngay lập tức hàm . Giá trị được lưu trữ được sử dụng khi hàm được gọi, là kết quả của việc gọi hàm. Bạn có thể thấy nó trong ví dụ tôi đã đưa ra trước đó."

"Ý bạn là phần int m = min(a, b) được chuyển đổi thành m = m2?"

"Vâng. Sau khi hàm kết thúc, mọi thứ hoạt động như thể giá trị trả về của hàm được viết vào đúng vị trí của nó. Hãy lặp lại cụm từ này trong đầu bạn và xem đoạn mã trong ví dụ trước. "

"Tôi nghĩ điều này chỉ có vẻ dễ dàng. Nó thực sự khó khăn. Tôi chỉ hiểu một phần của nó."

"Không sao. Trong lần thử đầu tiên, bạn chỉ có thể hiểu những điều bạn đã biết. Càng nhiều điều bạn không hiểu, bạn càng lao sâu vào một điều gì đó mới và kết quả của bạn sẽ càng tốt hơn. Nó sẽ trở nên rõ ràng hơn theo thời gian ."

"Chà, nếu bạn đã nói vậy. Hãy tiếp tục đi."