
Chào các 'developer-to-be' của anh Creyt! Hôm nay, chúng ta sẽ 'mổ xẻ' một từ khóa nhỏ nhưng có võ, mà nếu thiếu nó, code của các em sẽ như một cuộc gọi nhỡ không có tin nhắn thoại: từ khóa return trong Java, đặc biệt là trong thế giới OOP đầy mê hoặc.
return là gì mà "hot" vậy?
Tưởng tượng thế này nhé: Các em sai thằng em út đi mua giùm gói mì tôm. Thằng bé đi, mua xong, rồi nó mang gói mì tôm về cho các em. Cái hành động 'mang gói mì tôm về' đó, chính là return đấy.
Trong lập trình Java, đặc biệt là khi các em làm việc với các method (hành động của một object), từ khóa return có hai nhiệm vụ chính, mà anh gọi là "combo quyền năng":
- Trao lại giá trị (The Giver): Nó dùng để "trả về" một giá trị từ
methodđó cho nơi đã gọimethodấy. Giống như thằng em út trả mì tôm về cho các em vậy. Cái giá trị này có thể là số, chữ, một đối tượng khác, hay thậm chí là mộtnull(nếu chẳng may hết mì tôm). - Kết thúc nhiệm vụ (The Finisher): Ngay khi
returnđược thực thi,methodđó sẽ dừng mọi hoạt động còn lại và kết thúc. Kể cả có 100 dòng code phía dướireturn, chúng cũng sẽ bị "ngó lơ". Đây là lý do tại sao các em không thể có nhiều hơn một câu lệnhreturntrả về giá trị trong một đường đi (path) của code, trừ khi chúng nằm trong các nhánh điều kiện khác nhau.
Tóm lại: return là cách một method "báo cáo kết quả" và "kết thúc phiên làm việc" của mình. Nó là yếu tố sống còn để các method có thể giao tiếp, trao đổi dữ liệu với nhau, xây dựng nên một hệ thống phần mềm mạch lạc, không phải kiểu "tôi làm xong rồi, nhưng không biết kết quả ở đâu".
Code Ví Dụ Minh Họa: "Thằng Em Ưng Ý"
Hãy xem xét một ví dụ OOP kinh điển: một Calculator object (đối tượng máy tính) với các method tính toán.
public class Calculator {
// Method này "trả về" tổng của hai số nguyên
public int add(int num1, int num2) {
int sum = num1 + num2;
// Đây là lúc thằng em "trả lại" kết quả cho mình
return sum;
// Sau dòng này, không có gì được chạy nữa trong method này
}
// Method này cũng "trả về" hiệu của hai số nguyên
public int subtract(int num1, int num2) {
// Có thể return trực tiếp biểu thức
return num1 - num2;
}
// Method này "không trả về" giá trị nào cả (void)
// Nó chỉ thực hiện một hành động (in ra màn hình)
public void displayWelcomeMessage() {
System.out.println("Chào mừng đến với Calculator của Creyt!");
// Không có return ở đây, hoặc có thể dùng return; để kết thúc sớm
}
public static void main(String[] args) {
Calculator myCalc = new Calculator(); // Tạo một đối tượng Calculator
// Gọi method add() và nhận giá trị trả về
int resultAdd = myCalc.add(10, 5);
System.out.println("Tổng là: " + resultAdd); // Output: Tổng là: 15
// Gọi method subtract() và nhận giá trị trả về
int resultSubtract = myCalc.subtract(20, 7);
System.out.println("Hiệu là: " + resultSubtract); // Output: Hiệu là: 13
// Gọi method void, không cần gán vào biến vì nó không trả về gì
myCalc.displayWelcomeMessage(); // Output: Chào mừng đến với Calculator của Creyt!
}
}
Trong ví dụ trên, add() và subtract() đều có kiểu trả về (int), nên chúng bắt buộc phải dùng return để trả về một giá trị int. Còn displayWelcomeMessage() có kiểu trả về là void (nghĩa là "không có gì"), nên nó không cần return giá trị nào cả.

Mẹo từ anh Creyt: "Bí kíp võ công" với return
-
Kiểu trả về là "Lời Hứa": Khi em khai báo
public String getName(), em đang hứa với compiler và với các dev khác rằng method này chắc chắn sẽ trả về mộtString. Nếu emreturnmộtinthoặc khôngreturngì cả (trừ khi ném exception), compiler sẽ "đấm" em ngay.
-
returnsớm để "thoát hiểm" (Guard Clauses): Đây là một pattern cực kỳ hữu ích. Thay vì lồng ghép nhiềuif-elsephức tạp, hãy kiểm tra các điều kiện "không hợp lệ" ngay từ đầu vàreturnsớm.public String getUserStatus(int userId) { if (userId <= 0) { // Nếu userId không hợp lệ, thoát sớm và trả về thông báo lỗi return "ID người dùng không hợp lệ!"; } // ... Các logic phức tạp hơn chỉ chạy khi userId hợp lệ // Ví dụ: truy vấn database, xử lý dữ liệu if (userId == 123) { return "Admin"; } else { return "User thường"; } } -
Không lạm dụng
returntrongvoidmethods: Dù các em có thể dùngreturn;(không có giá trị) trongvoidmethod để kết thúc sớm, nhưng hãy cân nhắc kỹ. Đôi khi, cấu trúcif-elsehoặcbreak/continuetrong vòng lặp sẽ rõ ràng hơn. Chỉ dùngreturn;khi muốn thoát hoàn toàn khỏi method đó một cách có chủ đích.
Ứng dụng thực tế: return ở khắp mọi nơi!
Các em có biết return xuất hiện trong hầu hết các ứng dụng/website mà các em dùng hàng ngày không?
- Shopee/Tiki/Lazada: Khi các em thêm sản phẩm vào giỏ hàng,
methodcalculateTotalPrice()sẽreturntổng số tiền cần thanh toán.getProductDetails(productId)sẽreturnmộtProductobject chứa thông tin sản phẩm. - Facebook/Instagram: Khi các em
login(username, password),methodnày có thểreturnmộtUserSessionobject nếu đăng nhập thành công, hoặcreturn nullnếu sai thông tin.getPostsByUserId(userId)sẽreturnmột danh sách các bài viết. - Game online (Liên Quân, Genshin Impact):
calculateDamage(attacker, defender)sẽreturnlượng sát thương thực tế gây ra.getInventoryItems(player)sẽreturndanh sách đồ trong kho của người chơi.
Tất cả những "kết quả" mà các em thấy trên màn hình, hay những dữ liệu được xử lý ngầm, đều là nhờ các method đã return giá trị của chúng đấy.
Thử nghiệm của Creyt và lời khuyên chân thành
Anh từng thấy nhiều bạn newbie bối rối khi không biết khi nào thì cần return, khi nào thì void. Đơn giản thôi:
- Dùng
returnkhi method của em tạo ra hoặc tìm ra một thứ gì đó mà các phần khác của chương trình cần dùng đến. Ví dụ: tính toán, lấy dữ liệu từ database, tạo một đối tượng mới. - Dùng
voidkhi method của em chỉ thực hiện một hành động mà không cần trả lại kết quả cụ thể nào để dùng tiếp. Ví dụ: in ra màn hình, lưu dữ liệu vào database (hành động lưu là chính, không cần trả về "đã lưu thành công" mà có thể dùng exception để báo lỗi), thay đổi trạng thái của một đối tượng.
Hãy nghĩ về return như một cây cầu nối giữa các method, cho phép chúng trao đổi thông tin và kết hợp lại để tạo ra một chương trình mạnh mẽ. Nắm vững return là một bước tiến lớn trong hành trình trở thành một 'dev xịn' đó các em!
Thuộc Series: Java – OOP
Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!