Ý nghĩa của hàm main trong Java?


PHÂN TÍCH HÀM MAIN TRONG JAVA
Trong Java, mỗi khi bạn chạy một chương trình, bạn luôn sử dụng một hàm quen thuộc public static void main(String[] args). Khi chương trình chạy, nó sẽ tìm hàm này và chạy các dòng lệnh trong hàm. Vậy ý nghĩa của từng từ khóa trong hàm là gì? Chúng ta cùng tìm hiểu
(Với mỗi thành phần mình sẽ đưa ra ví dụ khi không tồn tại/ thay đổi thành phần đó, để các bạn xem kết quả khi chạy chương trình)
1.     Public
Đây là một từ khóa thuộc Access Modifier (Điều chỉnh quyền truy cập). Access Modifier có 4 loại (public, protected, default, private). Ý nghĩa của nó dùng để cho phép chương trình ở đâu được phép truy cập vào hàm, biến, class,... Ở đây ta chỉ nói về chế độ public. Khi một phần tử có từ khóa public, phần tử này cho phép tất cả chương trình từ bất cứ đâu truy cập và sử dụng. Chương trình thực thi của Java nằm ngoài package, và để có thể truy cập được chương trình của mình thì public là chế độ cần chọn (vì public cho phép cả chương trình nằm ngoài package truy cập vào)

2.     Static
Từ khóa này giúp cho hàm và biến này có thể được gọi mà không cần phải tạo object. Chương trình thực thi của Java vì muốn tận dụng sự tiện dụng này, cũng như để tiết kiệm bộ nhớ nên đã chọn hàm main ở chế độ static, và chắc hẳn chương trình thực thi này chỉ sử dụng <ten_class>.main(); để truy cập vào hàm main này. Nếu bạn không khai báo từ khóa static, chương trình của bạn sẽ bị lỗi.



3.     Void
Điều này cũng khá dễ hiểu vì mục đích của chương trình thực thi là muốn chạy chương trình của bạn, họ không cần bất kỳ giá trị nào cả, nên không cần phải trả về giá trị. Đây cũng là 1 từ khóa

4.     Main
main() là tên được quy định bởi Java, chỉ đơn giản là một cái tên, không phải là từ khóa, và tất nhiên bạn không được phép thay đổi chúng. Nếu bạn thay đổi, nó sẽ được xem như một hàm khác main()

5.     String[] args
Đây là tham số thuộc kiểu mảng String, là một tập hợp các biến. Nội dung của args chính là các giá trị được nhập khi chạy chương trình (bạn nào đã học qua Linux sẽ biết rằng khi chạy một chương trình người ta còn có thể đi kèm theo các tham số phía sau). Ở Windows, chúng ta có thể mở chế độ command line lên và nhập tham số bằng cách ấn Windows + R rồi gõ cmd. Ứng dụng của việc truyền tham số khi chạy chương trình này đó là bạn có thể làm ra các hệ thống tự động. Giả dụ như tính điểm trung bình của các học sinh trong một file dữ liệu nào đó. Bạn chỉ cần tạo một chương trình lấy điểm của từng học sinh, với mỗi học sinh thì sẽ chạy chương trình tính điểm trung bình với giá trị tham số là điểm tương ứng với học sinh đó.
Bạn có thể xem đơn giản giống như là nhập giá trị từ bàn phím giống Scanner vậy, nhưng là trước khi chạy chương trình.
Mình sẽ cho xem ví dụ khi thay đổi tên biến args xem chương trình có lỗi không nhé

Chương trình chắc chắn sẽ không có lỗi rồi, vì việc thay đổi tên gọi chỉ ảnh hưởng trong nội tại của hàm, không liên quan gì đến phía bên ngoài. (Mình thêm dòng “Chuong trinh da chay!” để các bạn thấy, sợ trống quá hổng thấy kết quả gì :DDD)
Để rõ hơn về phần này, mình sẽ viết chương trình tính tổng hai số và sử dụng hai cách truyền tham số: Thông qua Eclipse, thông qua cmd.
Đầu tiên chương trình của ta trông như thế này:

Ui sai gì vậy ta?
Oh, người ta bảo rằng các tham số truyền vào thể hiện dưới dạng chuỗi, vì thế ta nên đổi sang giá trị số để thuận tiện tính toán. Có 2 cách để đổi String sang Integer:

Hồi đó mình cũng đã có bài viết so sánh hai hàm này và có khuyên các bạn sử dụng Integer.valueOf() để nhanh hơn do chế độ auto-boxing. (Các bạn có thể xem lại)
Và giờ mình sẽ tiến hành chạy chương trình và truyền tham số!
Cách 1: Thông qua Eclipse
-        Click chuột phải và chọn Run As, sau đó chọn Run Configurations

Chọn tab Arguments. Tại Program arguments nhập 2 tham số. Sau đó ấn Run:

-        Kết quả sẽ hiển thị tại console

Cách 2: Sử dụng cmd
(Cách này mấy bạn lên mạng coi nhé, gõ “cmd command-line arguments java” là được. Mình bị một số lỗi và phát sinh thêm nhiều vấn đề quá L, thông cảm )

Tổng kết: Hôm nay chúng ta đã tìm hiểu được các chức năng của từng phần tử trong hàm main ra làm sao, cũng như một phương pháp mới để nhập input mà không cần dùng Scanner. Cảm ơn các bạn đã đọc bài viết của mình!
Nội dung bài viết thuộc về Lê Công Diễn.

Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn


Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)