Định nghĩa và tạo một phương thức
1. Cú pháp khai báo phương thức
Phần tiêu đề “1. Cú pháp khai báo phương thức”public class Main { // <modifier> <kiểu trả về> <tên phương thức>(<tham số>) { ... } static int square(int number) { return number * number; }
public static void main(String[] args) { int result = square(5); System.out.println(result); // 25 }}Một phương thức gồm:
- modifier:
public,private,static,… (quyền truy cập, phạm vi) - kiểu trả về: kiểu dữ liệu của giá trị phương thức trả về, hoặc
voidnếu không trả về gì - tên phương thức: theo quy ước
camelCase - danh sách tham số: đặt trong
(), mỗi tham số gồm kiểu và tên - thân phương thức: khối lệnh trong
{}
2. Phương thức void - không trả về giá trị
Phần tiêu đề “2. Phương thức void - không trả về giá trị”static void greet(String name) { System.out.println("Xin chào, " + name + "!"); // không có return, hoặc dùng "return;" để thoát sớm mà không kèm giá trị}3. Phương thức có giá trị trả về
Phần tiêu đề “3. Phương thức có giá trị trả về”Nếu kiểu trả về không phải void, phương thức bắt buộc phải có câu lệnh return kèm giá trị đúng kiểu ở mọi nhánh có thể chạy tới:
static String classify(int score) { if (score >= 50) { return "Đạt"; } else { return "Không đạt"; }}static int add(int a, int b) { // thiếu return ở đây -> LỖI BIÊN DỊCH: missing return statement}4. Phương thức phải nằm trong một lớp
Phần tiêu đề “4. Phương thức phải nằm trong một lớp”Khác với C++ hay Python, Java không có hàm độc lập nằm ngoài class - mọi phương thức đều phải thuộc về một lớp:
// KHÔNG hợp lệ - phương thức phải nằm trong class// int add(int a, int b) { return a + b; }
public class MathUtils { static int add(int a, int b) { // hợp lệ - nằm trong class MathUtils return a + b; }}5. static là gì? (giới thiệu nhanh)
Phần tiêu đề “5. static là gì? (giới thiệu nhanh)”Trong các ví dụ trên, phương thức được khai báo static để có thể gọi trực tiếp từ main mà không cần tạo đối tượng của class chứa nó:
public class Main { static int square(int n) { return n * n; }
public static void main(String[] args) { System.out.println(square(4)); // gọi trực tiếp, không cần "new Main()" }}Nếu bỏ static, phương thức trở thành phương thức instance - phải tạo đối tượng của class rồi mới gọi được qua đối tượng đó. Sự khác biệt giữa static và instance method được nói kỹ hơn ở phần Hướng đối tượng (OOP).
Tổng kết
Phần tiêu đề “Tổng kết”- Cú pháp:
<modifier> <kiểu trả về> <tên>(<tham số>) { ... } voidnghĩa là không trả về giá trị; ngược lại bắt buộc phải córeturnở mọi nhánh- Mọi phương thức trong Java phải thuộc về một lớp
staticcho phép gọi phương thức mà không cần tạo đối tượng - chi tiết ở phần OOP