Trước hết chúng ta phải lưu ý rằng từ khóa return không chỉ giới hạn trong ngôn ngữ Java mà nó là một khái niệm chung cho các ngôn ngữ lập trình kể cả C,C++, Python v.v kể cả assembler.
Nó đề cập đến một hàm, chương trình con hay các phương thức trả lại quyền điều khiển cho nơi gọi nó có thể là một hàm, một phương thức khác v.v.
Đây là nguyên tắc chung của lập trình: bạn chia những việc bạn phải làm thành các phần và mỗi phần được thực hiện bởi một số hàm hoặc phương thức. Cách làm này rất hữu ích vì bạn có thể tạo các hàm hoặc phương thức chung và sử dụng chúng ở nhiều nơi khác nhau.
Hãy nghĩ đến phương thức Math.abs (double) trong Java. Nó tính toán giá trị tuyệt đối của tham số và nó có thể được sử dụng cho nhiều ứng dụng khác nhau: một phương thức chung trả về giá trị tuyệt đối của một giá trị kép.
... public static double myAbs(double x) { return x >= 0.0 ? x : -x; } ... System.out.println("%f", myAbs(-1));
Tại dòng 6, phương thức myAbs() được gọi với tham số -1. Điều này có nghĩa là bộ xử lý “gọi” phương thức myAbs(), do đó, việc thực thi chuyển đến dòng đầu tiên của phương thức myAbs() trả về chính số nếu nó lớn hơn hoặc bằng 0, nó sẽ phủ nhận nó nếu nó nhỏ hơn 0.
Có nghĩa là sau khi hàm myAbs return, quyền điều khiển sẽ được trả về nơi gọi chính là dòng số 6, và nhiệm vụ của nó là xuất ra giá trị được trả về từ myAbs.
Ngoài ra có những hàm, phương thức không trả về giá trị nào cho nơi gọi đến, trong trường hợp này nó chỉ trả lại quyền kiểm soát mà không hề có giá trị nào kèm theo.
public static void printSquareRootIfReal(double value) { if (value < 0) { return; } System.out.println( "The real square root of %f is %f", value, Math.sqrt(value)); }
Hiểu rồi? Ở đây không có gì để trả về nhưng so sánh căn bậc hai của một số âm không cho kết quả thực, vì vậy phương thức trả về trước như không có gì phải làm. Điều này có nghĩa là nếu số âm, dòng 3 được thực thi và phương thức trả về trình gọi mà không in ra bất kỳ thứ gì.
Một trong những nguyên tắc của lập trình có cấu trúc (Lập trình có cấu trúc – Wikipedia) nói rằng tất cả các phương thức thực thi nên có một lối vào và một lối ra. Bằng cách nào đó câu lệnh trả về phá vỡ quy tắc này. Ví dụ trước đó phương thức printSquareRootIfReal vừa nảy có một điểm vào (dòng 1) nhưng có hai điểm thoát (dòng 3 và dòng 7).
Nguồn
https://www.quora.com/What-does-%E2%80%98return%E2%80%99-mean-in-Java