VieTopik
Tiếng HànTiếng Anh.NET (C#)Java
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Java CoreBắt đầu
Bài 6/19
5 phút

Method

Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Công thức tính tiền đơn hàng được dùng ở trang giỏ hàng, trang thanh toán và hoá đơn. Chép công thức ra ba nơi thì lúc sửa phải nhớ sửa cả ba. Method giúp bạn viết một lần, đặt tên, rồi gọi ở bất cứ đâu.

Khái niệm

🛠️ Method: một khối code có tên, có thể nhận đầu vào và trả về kết quả, gọi được nhiều lần.

📥 Tham số (parameter): biến khai báo trong ngoặc của method, nhận giá trị được truyền vào lúc gọi.

📤 Giá trị trả về (return value): kết quả method gửi lại cho nơi gọi, bằng từ khoá return.

Ví dụ

void main() {
    long total = calculateTotal(5000, 3);
    System.out.println(total);   // 15000

    printLine("Cảm ơn quý khách");
}

long calculateTotal(long price, int quantity) {
    return price * quantity;
}

void printLine(String message) {
    System.out.println("--- " + message + " ---");
}

Một method gồm bốn phần, lấy calculateTotal làm ví dụ:

  • long: kiểu của giá trị trả về.
  • calculateTotal: tên method, viết kiểu camelCase, thường là động từ.
  • (long price, int quantity): danh sách tham số.
  • { ... }: thân method, return gửi kết quả về và kết thúc method.

Method không trả về gì thì dùng void, như printLine. Chính main cũng là một method void, và Java gọi nó đầu tiên khi chạy file.

price = 5000, quantity = 3 return 15000 total = 15000 Chương trình calculateTotal
Gọi calculateTotal: truyền tham số vào, nhận giá trị trả về

Thử ngay

Dán vào Main.java rồi chạy java Main.java:

void main() {
    long price = 100000;
    long result = applyDiscount(price, 10);

    System.out.println(price);
    System.out.println(result);
}

long applyDiscount(long amount, int percent) {
    amount = amount - amount * percent / 100;
    return amount;
}

Đoán trước khi chạy: method đã sửa amount. Vậy biến price bên ngoài có bị đổi thành 90000 không?

Xem kết quả
100000
90000

Không đổi. Lúc gọi, giá trị của price được chép vào tham số amount. Method sửa bản chép, còn price giữ nguyên.

Lỗi hay gặp

Thiếu return. Method khai báo có kiểu trả về thì mọi nhánh đều phải return.

// SAI — lỗi compile: total < 500000 thì không có return
void main() {
    System.out.println(shippingFee(100000));
}

long shippingFee(long total) {
    if (total >= 500000) {
        return 0;
    }
}
// ĐÚNG
void main() {
    System.out.println(shippingFee(100000)); // 30000
}

long shippingFee(long total) {
    if (total >= 500000) {
        return 0;
    }
    return 30000;
}

Lấy kết quả từ method void. Method void không trả về gì để gán.

// SAI — lỗi compile: printLine không trả về giá trị
void main() {
    var text = printLine("Xin chào");
}

void printLine(String message) {
    System.out.println(message);
}
// ĐÚNG — chỉ gọi, không gán
void main() {
    printLine("Xin chào");
}

void printLine(String message) {
    System.out.println(message);
}

Tóm tắt

  • Method là khối code có tên, viết một lần và gọi nhiều lần.
  • Khai báo: kiểu_trả_về tên(tham số) { ... }.
  • return gửi kết quả về, void nghĩa là không trả về gì.
  • Tham số nhận bản chép của giá trị truyền vào, nên sửa tham số không làm đổi biến bên ngoài.

Tự kiểm tra

0/3 câu
Câu 1

Method int square(int n) { return n * n; } Gọi System.out.println(square(4) + 1); in ra gì?

Câu 2

Method nào nên khai báo void?

Câu 3

int count = 5; addOne(count); System.out.println(count); với void addOne(int n) { n = n + 1; }. In ra gì?

Vòng lặpString

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt