Method
Nội dung bài · 5 mục
- 1.Khái niệm
- 2.Ví dụ
- 3.Thử ngay
- 4.Lỗi hay gặp
- 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,returngử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.
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
90000Khô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ố) { ... }. returngửi kết quả về,voidnghĩ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âuMethod int square(int n) { return n * n; } Gọi System.out.println(square(4) + 1); in ra gì?
Method nào nên khai báo void?
int count = 5; addOne(count); System.out.println(count); với void addOne(int n) { n = n + 1; }. In ra gì?