Thậm chí tho OP chỉ đang nói về String[] args
, tôi muốn đưa ra một ví dụ hoàn chỉnh của public static void main(String[] args)
.
Public
: là Access Modifier, xác định ai có thể truy cập Phương pháp này. Công cộng có nghĩa là Phương thức này sẽ được truy cập bởi bất kỳ Lớp học nào (Nếu các Lớp khác có thể truy cập vào Lớp này.).
Static
: là từ khóa xác định thứ liên quan đến lớp học. Điều này có nghĩa là phương thức hoặc biến đã cho không liên quan đến cá thể nhưng có liên quan đến lớp. Nó có thể được truy cập mà không tạo ra thể hiện của một Class.
Void
: được sử dụng để xác định Loại trả lại của Phương thức. Nó định nghĩa phương thức có thể trả về. Void có nghĩa là Method sẽ không trả về bất kỳ giá trị nào.
main
: là tên của Phương thức. Tên Phương thức này được JVM tìm kiếm làm điểm bắt đầu cho một ứng dụng chỉ có chữ ký cụ thể.
String[] args
: là tham số cho Phương thức chính.
Nếu bạn nhìn vào mã nguồn JDK (jdk-src \ j2se \ src \ share \ bin \ java.c):
/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
Bạn có thể thấy rằng starting method trong java phải được đặt tên main
và phải có chữ ký cụ thể public static void main(String[] args)
Mã này cũng cho chúng ta biết rằng public static void main(String[] args)
chưa được khắc phục, nếu bạn thay đổi mã trong (jdk-src \ J2SE \ src \ share \ bin \ java.c) để chữ ký khác, nó sẽ làm việc nhưng thay đổi này sẽ cung cấp cho bạn các vấn đề khác có thể vì java specs
Offtopic: đã 7 năm kể từ khi OP hỏi câu hỏi này, tôi đoán là OP có thể trả lời câu hỏi của anh ấy ngay bây giờ.
Worth chú ý là 'args' không nhất thiết phải có tên 'args' (bạn có thể đặt tên cho nó bất cứ điều gì bạn muốn) - mặc dù nó là tốt nhất để làm theo quy ước. Bạn cũng có thể thấy 'Chuỗi ... args' theo thời gian, tương đương. – vikingsteve
lập chỉ mục arg bắt đầu bằng 0. (trái với C cho bạn biết tên chương trình) – AdrieanKhisbe
@Daniel, 'args' có được bảo đảm tách biệt theo không gian bất kể hệ điều hành không? – Pacerier