Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục giới thiệu về chủ đề Giá trị trả về của phương thức trong Java. Ở bài này, mình sẽ đi qua những nội dung như sau:
Nội dung
1. Câu lệnh return
Trong những ví dụ trước đây, chúng ta đã sử dụng void làm kiểu trả về của phương thức. Điều này là do chúng ta không trả về bất kỳ giá trị nào từ phương thức.
Bên trong phương thức, ta cũng có thể thêm một câu lệnh return
.
Câu lệnh trả về (return) sẽ:
- kết thúc quá trình thực thi của phương thức hiện tại
- trả lại quyền điều khiển của chương trình cho phương thức trước đó gọi đến.
Hãy xem ví dụ tính bình phương của một số.
class Main {
// method definition
void findSquare(int number) {
int result = number * number;
System.out.println("Square of " + number + " is " + result);
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
obj.findSquare(12);
}
}
// Output:
// Square of 12 is 144
Bây giờ, hãy thêm một câu lệnh return
bên trong phần định nghĩa phương thức.
class Main {
// method definition
int findSquare(int number) {
int result = number * number;
// return statement
return 0;
System.out.println("Square of " + number + " is " + result);
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
obj.findSquare(12);
}
}
Ở ví dụ này, chúng ta đã thay đổi kiểu trả về thành int
từ void
. Đó là bởi vì lần này ta đang trả về giá trị số nguyên 0 từ phương thức findSquare() (được biểu thị bằng return 0
).
Khi chạy chương trình, chúng ta sẽ gặp lỗi vì câu lệnh return
nên được sử dụng để kết thúc phương thức.
Tuy nhiên, trong code, dòng System.out.println("Square of " + number + " is " + result);
xuất hiện sau câu lệnh return
, đây là nguyên nhân gây ra lỗi.
Về cơ bản, khi một câu lệnh return
được thực thi, phương thức sẽ kết thúc ngay lập tức, vì vậy nó phải là câu lệnh cuối cùng của phương thức.
2. Trả về giá trị từ phương thức
Câu lệnh return
trả về một giá trị cho phương thức gọi. Hãy xem một ví dụ.
Đây là phương thức findSquare()
từ ví dụ trước.
class Main {
// method definition
void findSquare(int number) {
int result = number * number;
System.out.println("Square of " + number + " is " + result);
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
obj.findSquare(12);
}
}
Có thể thấy phương thức này đang in giá trị bình phương bên trong nó và nó hoạt động bình thường.
Tuy nhiên, trong các chương trình ngoài đời thực, sẽ tốt hơn nếu ta tìm giá trị bình phương bên trong phương thức và sử dụng kết quả của nó ở một nơi khác (chúng ta sẽ thảo luận lý do tại sao ở phần sau). Chúng ta có thể làm được điều này bằng cách sử dụng câu lệnh return
.
Hãy sửa đổi chương trình trên để phương thức trả về một giá trị cho phương thức gọi.
class Main {
// method definition
int findSquare(int number) {
int result = number * number;
return result;
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
int result = obj.findSquare(12);
System.out.println("Square: " + result);
}
}
// Output:
// Square: 144
Cách chương trình hoạt động:
Trong chương trình:
- Phương thức
findSquare()
được gọi với tham số 12. - Giá trị này hiện được gán cho tham số
number
bên trong phương thức. - Bên trong phương thức, ta tính bình phương của số và trả về kết quả bằng cách sử dụng câu lệnh
return
. - Trong ví dụ, giá trị 144 được trả về cho phương thức gọi.
- Vì phương thức trả về một giá trị số nguyên nên ta gán lệnh gọi phương thức cho biến số nguyên
result
. - Để ý rằng chúng ta cũng thay đổi kiểu trả về từ
void
thànhint
.
Hãy xem thêm một ví dụ để hiểu rõ hơn.
3. Cộng các số sử dụng phương thức
Nhắc lại chương trình cộng hai số.
class Main {
// method definition
void addNumbers(int n1, int n2) {
int result = n1 + n2;
System.out.println("Sum is " + result);
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
obj.addNumbers(5, 6);
}
}
// Output:
// Sum is 11
Hãy sửa đổi code để trả về tổng từ phương thức.
class Main {
// method definition
int addNumbers(int n1, int n2) {
int result = n1 + n2;
return result;
}
public static void main(String[] args) {
// creating object of Main class
Main obj = new Main();
// method call
int sum = obj.addNumbers(5, 6);
System.out.println("Sum is " + sum);
}
}
// Output:
// Sum is 11
Như bạn thấy, ta đã sử dụng câu lệnh return
để trả về result
từ phương thức addNumbers()
.
Cách chương trình hoạt động:
Trong chương trình:
- Phương thức
addNumbers()
được gọi với đối số 5 và 6 tương ứng. - Các giá trị này lần lượt được lấy bởi
n1
vàn2
bên trong phương thức. - Bên trong phương thức,
result
được tính toán. Giá trị này được trả về bằng cách sử dụng câu lệnhreturn
,return result
. - Trong chương trình này, 11 được trả về cho phương thức gọi, giá trị này được gán cho biến
sum
.
Việc viết các phương thức nhận đối số và trả về giá trị yêu cầu bạn phải thực hành nhiều. Vì vậy, chúng ta sẽ tạo thêm một vài chương trình liên quan đến phương thức trong chương này.
Nhưng trước đó, hãy xem lý do tại sao việc sử dụng tham số và trả về giá trị đúng cách lại quan trọng.
4. Tại sao cần sử dụng tham số và trả về giá trị?
Việc sử dụng tham số và giá trị trả về cho phép chúng ta biến phương thức thành một đoạn code độc lập.
Đây là ví dụ phương thức cộng hai số được sử dụng ở trên.
int addNumbers(int n1, int n2) {
int result = n1 + n2;
return result;
}
Bất cứ ai cũng có thể sử dụng phương thức này ngay cả khi họ không hiểu những gì bên trong nó. Họ chỉ cần biết hai điều:
- phương thức nhận đối số gì
- phương thức trả về cái gì
Trên thực tế, chúng ta đã sử dụng khá nhiều phương thức ngay từ đầu khóa học này mà không biết chúng hoạt động như thế nào. Ví dụ:
System.out.println()
Chúng ta không biết phương thức này hoạt động nội bộ như thế nào. Tuy nhiên, chúng ta có thể sử dụng phương thức này vì chúng ta biết nếu truyền đối số cho phương thức này, nó sẽ in văn bản trên thiết bị đầu ra.
System.out.println("Hello World");
Ngoài ra, các phương thức như System.out.println()
, nextInt()
, nextDouble()
, v.v. được gọi là phương thức thư viện chuẩn. Định nghĩa của các phương thức tích hợp này được tạo sẵn trong Thư viện Java và luôn có sẵn để sử dụng.
Vì vậy, bất cứ khi nào bạn tạo ra một phương thức để giải quyết vấn đề, hãy luôn đặt ra hai câu hỏi:
- Phương thức sẽ lấy các đối số nào?
- Phương thức nên trả về giá trị gì?
5. Kết
Như vậy chúng ta đã tìm hiểu xong chủ đề Giá trị trả về của phương thức trong Java. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.
Nguồn:
https://tek4.vn/khoa-hoc/lap-trinh-huong-doi-tuong-voi-java/gia-tri-tra-ve-cua-ham-trong-java