Ý 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)
(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
Đăng nhận xét