Các biến và hằng trong Java lưu trữ các giá trị, trong khi các phương thức chứa một tập hợp các toán tử thực hiện các hành động nhất định. Nghĩa là, các phương thức trong Java xác định hành vi của các đối tượng và thực hiện các hành động trên một số biến. Họ có thể thực hiện các hành động và tạo ra một kết quả nhất định.

Phương thức trong Java là gì?

Các phương thức xác định hành vi của các đối tượng và là một chuỗi lệnh cho phép bạn thực hiện một số thao tác trong chương trình. Trong các ngôn ngữ lập trình khác, các phương thức thường được gọi là "hàm" và đúng như vậy. Trong thực tế, một phương pháp là một hàm theo nghĩa toán học. Thông thường một cái gì đó được cung cấp cho đầu vào của phương thức (một số biến), các biến này được xử lý bằng một chuỗi lệnh và sau đó phương thức tạo ra kết quả. Có thể bạn đã từng gặp các phương thức, ít nhất là với public static void main(String[] args) . Phương thức này thường bắt đầu thực thi một chương trình Java.

Làm thế nào để khai báo các phương thức trong Java?

Tất cả các phương thức trong Java đều được tạo bên trong các lớp. Chúng được khai báo như sau:

accessSpecifier ReturnType name (parameter list) {
//method body 
}
Ví dụ:

public int addTwoNumbers (int a, int b){

//method body
return}
Trong đó public là bộ xác định truy cập, int là loại biến mà phương thức trả về, addTwoNumbers là tên của phương thức, ab là các tham số của phương thức. Chúng ta hãy xem xét chi tiết hơn một chút. Trình xác định truy cập được sử dụng để xác định loại truy cập của phương thức. chúng có thể như sau:
  • public : quyền truy cập vào phương thức này có sẵn từ bất kỳ lớp nào.

  • riêng tư : quyền truy cập có sẵn trong lớp nơi nó được xác định.

  • protected : quyền truy cập chỉ khả dụng bên trong gói hoặc các lớp con khác trong gói khác.

  • mặc định : quyền truy cập có sẵn từ gói được khai báo. Trong trường hợp này, từ "mặc định" không được viết.

Kiểu trả về xác định kiểu mà phương thức này trả về. Trong ví dụ trên, int là kiểu trả về. Nếu một phương thức không trả về gì thì kiểu trả về là void:

public void printSomething (String myString) {}
Tên phương thức là tên duy nhất của phương thức của bạn. Chúng tôi sẽ giải thích một số quy tắc đặt tên Java ở phần sau của bài viết này. Trong các phương thức trên, tên là addTwoNumbersprintSomething . Danh sách tham số là danh sách các đối số (kiểu dữ liệu và tên biến) mà phương thức lấy. Trong ví dụ đầu tiên ở trên, "int a, int b" là các tham số, trong ví dụ thứ hai, String myString là một đối số. Bạn cũng có thể để trống trường này nếu bạn không muốn sử dụng bất kỳ tham số nào trong phương thức.

Ví dụ về tham số phương thức


public void printSomething (String myParameter1, int myParameter2) {}
Đây là hai biến, myParameter1myParameter2 . Chúng là các tham số của phương thức. là tập lệnh được đặt trong dấu ngoặc nhọn mà phương thức sẽ thực thi. Nếu kiểu trả về của phương thức không phải là void thì từ khóa return phải có trong thân phương thức. return được theo sau bởi đối số mà phương thức này trả về. Vì vậy, để tạo một phương thức, bạn cần chỉ định tên của nó cùng với dấu ngoặc và trong ngoặc, nếu cần, các biến mà phương thức sẽ hoạt động. Trước tên phương thức là một bộ xác định truy cập và một loại biến mà phương thức trả về hoặc void nếu phương thức không trả về gì. Trong dấu ngoặc nhọn, chúng ta viết phương thức thực tế, một chuỗi hướng dẫn thường hoạt động với các đối số của phương thức. Đây là một ví dụ về phương thức tìm số lớn nhất trong một mảng và trả về số đó.

public int findBiggest(int[] numbers) {
   int max;
   max = numbers[0];
   for (int i = 1; i < numbers.length; i++) {
       if (max < numbers[i]) {
           max = numbers[i];
       }
   }
   return max;
}

Làm thế nào để đặt tên cho một phương pháp?

Không có quy tắc nghiêm ngặt nào về việc đặt tên phương thức, nhưng có những nguyên tắc mà bạn nên tuân theo nếu dự định phát triển Java một cách chuyên nghiệp. Tên phương thức thường là động từ, được viết bằng chữ hỗn hợp, bắt đầu bằng chữ cái viết thường nhưng sử dụng chữ in hoa cho mỗi từ tiếp theo (camelCase). Dưới đây là một số ví dụ:

int addTwoNumbers (int a, int b) 
void run() 

Cách gọi một Phương thức

Để gọi một phương thức, chỉ cần viết tên của nó và đặt các biến tương ứng nếu chúng có ở phần khai báo là đủ. Hãy gọi phương thức findBiggest trong phương thức chính :

public static void main(String[] args) {
  int[] array = new int[] {5, 7, -2, 6, 7, 1};
  int max = findBiggest(array);
   System.out.println("the biggest number in array is: " + max);
  }
Đầu ra của chương trình này là:
số lớn nhất trong mảng là: 7

Các loại phương thức khác nhau trong Java

Trong Java, mọi thứ đều được tạo thành từ các đối tượng và hành vi của các đối tượng được xác định bằng các phương thức. Thông thường, chúng ta có thể nói rằng Java có các phương thức được xác định trước và do người dùng xác định. Các phương thức được xác định trước là các phương thức được bao gồm trong các lớp là một phần của chính ngôn ngữ Java.

Phương pháp được xác định trước

Các phương thức thư viện tiêu chuẩn hoặc được xác định trước được tích hợp vào Java. Tất nhiên, mọi lập trình viên đều có thể sử dụng chúng hoặc thậm chí sửa đổi chúng cục bộ cho chương trình của họ. Thư viện lớp Java nằm trong tệp lưu trữ Java (ví dụ: *jar) với máy ảo Java (JVM) và môi trường thời gian chạy Java. Ví dụ, đây có thể là các phương thức của lớp Math như min() , max() hoặc abs() . Hoặc các phương thức thao tác chuỗi như concat() . Hãy tạo một lớp với một phương thức chính và gọi một vài phương thức thư viện tiêu chuẩn.

import static java.lang.Math.max;

public class Test {

    public static void main(String[] args) {
       int a = 5;
       int b = 7;
       int max = max(a,b);
       System.out.println(max);
       String str1 = "I am ";
       String str2 = "here ";
       String str3 = str1.concat(str2);
       System.out.println(str3);


   }

}
Lưu ý rằng để sử dụng được các phương thức của lớp Math thì nó phải được import vào đầu chương trình. Nếu điều này không được thực hiện, bạn có thể viết tên lớp trước tên phương thức, cách nhau bằng dấu chấm:

int max = Math.max(a,b);

Phương thức do người dùng xác định

Những phương pháp này được các lập trình viên tạo ra theo yêu cầu của dự án của họ. Trên thực tế, chúng tôi đã tạo phương thức findBiggest() do người dùng định nghĩa ở trên. Để hợp nhất, hãy tạo một phương thức khác không trả về bất cứ thứ gì và không có tham số nhưng phản hồi với tên đã nhập và nói xin chào (nghĩa là xuất ra bảng điều khiển).

import java.util.Scanner;

public class Test {
  
   public void repeater() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}

Tạo các phương thức tĩnh trong Java

Nói chung, các phương thức trong Java là các phương thức của đối tượng. Để gọi một phương thức, bạn cần tạo một thể hiện của lớp nơi phương thức này được định nghĩa. Tuy nhiên, cũng có những phương pháp tĩnh. Chúng khác với những cái thông thường ở chỗ chúng được gắn vào một lớp chứ không phải một đối tượng. Một thuộc tính quan trọng của phương thức tĩnh là nó chỉ có thể truy cập các biến/phương thức tĩnh. Chúng được xác định bằng từ khóa tĩnh . Vì vậy, trong lớp Toán , tất cả các phương thức làm việc với biến đều là tĩnh. Chúng ta có thể tạo một cái gì đó tương tự như lớp Math và thu thập một số phương thức tĩnh trong đó có thể được sử dụng mà không cần tạo một thể hiện của lớp chứa. Hãy gọi nó là Số .

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;


public class Numbers {
 

   public static int findMax(int left, int right) {
       return (left < right) ? right : left;
   
   }


   public static boolean isNegative(int number) {
       return number < 0;
   }

   public static long power(long number, int deg) {

       if (deg == 0) {
           number = 1;
           return number;
       } else {
           number = power(number, deg - 1) * number;
           return number;
       }
   }

   public static long abs(long number) {
       return number > 0 ? number : -number;
     }


    public static void main(String[] args) {
     
       int a = 5;
       int b = 7;
       long c = -7;
       long abs = abs(c);
       System.out.println(abs);
       System.out.println(findMax(a,b));
      
   }

}
Đầu ra của chương trình là đây:
7 7
Đầu tiên, một phương thức được gọi để tra cứu giá trị tuyệt đối của số, sau đó là một phương thức tìm kiếm số lớn hơn trong hai số. Bạn không cần tạo một phiên bản của lớp Numbers để gọi các phương thức này vì cả hai phương thức đều được định nghĩa là tĩnh.

Áp dụng các phương thức instance trong mã Java

Các phương thức cá thể hoặc các phương thức thông thường có thể được gọi trên thể hiện của lớp mà phương thức đó được định nghĩa.

public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
Để gọi phương thức talk() , bạn cần tạo một thể hiện của lớp Cat :

public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();
     
   }
}
Đầu ra chương trình này ở đây:
meo meo

Các phương thức trừu tượng trong Java

Các phương thức trừu tượng trong Java là các phương thức không được triển khai. Tức là chúng không chứa mã khi được khai báo. Chúng chỉ có thể được khai báo trong các lớp trừu tượng và được triển khai trong các lớp con không trừu tượng của chúng. Hãy tạo một lớp trừu tượng với một phương thức trừu tượng myMethodAdd() .

abstract class DemoAbs {
   abstract void myMethodAdd();
}
Bây giờ hãy tạo một lớp Con của lớp trừu tượng này, DemoAbs . Ở đây chúng ta nhất thiết phải triển khai phương thức myMethodAdd() .

public class myClass extends DemoAbs {
  
   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

Cấp phát bộ nhớ cho các cuộc gọi phương thức

Đây là một chủ đề khá phức tạp đòi hỏi phải phân tích cẩn thận hơn. Ở đây chúng tôi sẽ chỉ đề cập đến những điều cơ bản nhất dành cho những người mới làm quen với chủ đề này một cách hời hợt. Bộ nhớ JVM bao gồm các vùng heap và stack. Heap là vùng bộ nhớ lưu trữ các đối tượng Java. Bộ nhớ ngăn xếp là vùng bộ nhớ tạm thời lưu trữ các biến nguyên thủy và tham chiếu đến các đối tượng phương thức. Bộ nhớ ngăn xếp chứa các giá trị tồn tại trong thời gian ngắn phụ thuộc vào phương thức. Loại bộ nhớ này dựa trên nguyên tắc Vào trước ra trước (LIFO). Bộ nhớ ngăn xếp tạo một khối mới khi chúng ta gọi một phương thức. Nó chứa các giá trị nguyên thủy cục bộ. Khi chúng ta kết thúc một phương thức, khối được tạo trong bộ nhớ ngăn xếp sẽ trống.

Phần kết luận

Trong bài viết này, chúng ta đã làm quen với những kiến ​​thức cơ bản về tạo phương thức trong ngôn ngữ Java, cũng như các phương thức trong Java là gì và cách làm việc với chúng. Chúng ta đã học được rằng các phương thức xác định hành vi của các lớp. Nếu không có phương thức thì các đối tượng sẽ không thể tương tác với nhau. Để củng cố những gì bạn đã học, chúng tôi khuyên bạn nên xem bài học video từ Khóa học Java của chúng tôi