Tôi mới bắt đầu viết chương trình bằng Java. Mã Java sau có nghĩa là gì?
public static void main(String[] args)
Là
String[] args
gìKhi nào bạn sẽ sử dụng chúng
args
?
Mã nguồn và / hoặc ví dụ được ưa thích hơn các giải thích trừu tượng
Tôi mới bắt đầu viết chương trình bằng Java. Mã Java sau có nghĩa là gì?
public static void main(String[] args)
Là String[] args
gì
Khi nào bạn sẽ sử dụng chúng args
?
Mã nguồn và / hoặc ví dụ được ưa thích hơn các giải thích trừu tượng
Câu trả lời:
Trong Java args
chứa các đối số dòng lệnh được cung cấp dưới dạng một mảng các String
đối tượng.
Nói cách khác, nếu bạn chạy chương trình của mình java MyProgram one two
thì args
sẽ chứa ["one", "two"]
.
Nếu bạn muốn xuất nội dung của args
, bạn có thể lặp qua chúng như thế này ...
public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
args
đảm bảo tách biệt bởi không gian bất kể hệ điều hành?
-version
ví dụ, nó java -version
và java.exe -version
, nhưng không java.exe /version
(cố gắng tải lớp chính .version
). Chỉ cần 2 xu của tôi nếu ai đó vấp phải điều này.
Chúng dành cho các đối số dòng lệnh trong Java.
Nói cách khác, nếu bạn chạy
java MyProgram một hai
Sau đó args
chứa:
[ "một hai" ]
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
Lý do cho điều này là để cấu hình ứng dụng của bạn chạy một cách cụ thể hoặc cung cấp cho nó một số thông tin cần thiết.
Nếu bạn chưa quen với Java, tôi khuyên bạn nên đọc qua Hướng dẫn Java TM chính thức của Oracle .
args
chứa các đối số dòng lệnh được truyền cho chương trình Java khi gọi. Ví dụ: nếu tôi gọi chương trình như vậy:
$ java MyProg -f file.txt
Sau đó args
sẽ là một mảng chứa các chuỗi "-f"
và "file.txt"
.
javac MyProg.java
và hơn là chạy java MyProg -f file.txt
. Có một lý do cho điều này, bởi vì không nơi nào trong câu trả lời được đề cập?
.class
tệp.
Câu trả lời sau đây dựa trên sự hiểu biết của tôi và một số bài kiểm tra.
Chuỗi [] args là gì?
Trả lời->
Chuỗi [] -> Như chúng ta biết đây là mảng Chuỗi đơn giản.
args -> là tên của một mảng, nó có thể là bất cứ thứ gì (ví dụ: a, ar, argument, param, tham số) không có vấn đề gì với trình biên dịch & thực thi & tôi cũng đã thử nghiệm.
Ví dụ
1) đối số static void void main (String [])
2) static static void main (tham số String [])
Khi nào bạn sẽ sử dụng những args này?
Trả lời->
Các chức năng chính được thiết kế rất thông minh bởi các nhà phát triển. Suy nghĩ thực tế rất sâu sắc. Về cơ bản được phát triển dưới sự xem xét của C & C ++ dựa trên đối số dòng lệnh nhưng ngày nay không ai sử dụng nó nhiều hơn.
Điều 1- Người dùng có thể nhập bất kỳ loại dữ liệu nào từ dòng lệnh có thể là Số hoặc Chuỗi & cần thiết để chấp nhận nó bởi trình biên dịch mà kiểu dữ liệu nào chúng ta nên sử dụng? xem điều 2
Thing 2- String là kiểu dữ liệu hỗ trợ tất cả các kiểu dữ liệu nguyên thủy như int, long, float, double, byte, shot, char trong Java. Bạn có thể dễ dàng phân tích nó trong bất kỳ kiểu dữ liệu nguyên thủy nào.
Ví dụ: Chương trình sau đây được biên dịch và thực hiện và tôi cũng đã thử nghiệm.
Nếu đầu vào là -> 1 1
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] parameter)
{
System.out.println(parameter[0] + parameter[1]); // Output is 11
//Comment out below code in case of String
System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0
System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2
System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0
}
}
Ngay cả OP OP chỉ nói về String[] args
, tôi muốn đưa ra một ví dụ hoàn chỉnh về public static void main(String[] args)
.
Public
: là Công cụ sửa đổi truy cập , định nghĩa ai có thể truy cập Phương thức này. Công khai có nghĩa là Phương thức này sẽ có thể truy cập được bởi bất kỳ Lớp nào (Nếu các Lớp khác có thể truy cập Lớp này.).
Static
: là một từ khóa xác định điều liên quan đến lớp. Điều này có nghĩa là Phương thức hoặc biến đã cho không liên quan đến thể hiện nhưng liên quan đến Lớp. Nó có thể được truy cập mà không cần tạo thể hiện của Class.
Void
: được sử dụng để xác định Kiểu trả về của Phương thức. Nó định nghĩa những gì phương thức có thể trả về. Vô hiệu có nghĩa là Phương thức 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ó một chữ ký cụ thể.
String[] args
: là tham số cho Phương thức chính.
Nếu bạn xem 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 phương thức bắt đầu 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 tôi biết rằng mã public static void main(String[] args)
này chưa được sửa, nếu bạn thay đổi mã trong (jdk-src \ j2se \ src \ share \ bin \ java.c) sang chữ ký khác, nó sẽ hoạt động nhưng việc thay đổi này sẽ gây ra cho bạn các vấn đề khác có thể xảy ra bởi vì thông số kỹ thuật java
Offtopic: Đã 7 năm kể từ khi OP hỏi câu hỏi này, tôi đoán bây giờ OP có thể trả lời câu hỏi của chính mình.
String [] args
cũng là cách bạn khai báo một mảng Chuỗi trong Java.
Trong chữ ký phương thức này, mảng args
sẽ được điền với các giá trị khi phương thức được gọi (như các ví dụ khác ở đây hiển thị). Vì bạn đang học, nên đáng để hiểu rằng args
mảng này giống như khi bạn tự tạo một phương thức, như trong:
public void foo() {
String [] args = new String[2];
args[0] = "hello";
args[1] = "every";
System.out.println("Output: " + args[0] + args[1]);
// etc... the usage of 'args' here and in the main method is identical
}
Tôi sẽ chia tay
public static void main(String args[])
trong các bộ phận.
"công khai" có nghĩa là main () có thể được gọi từ bất cứ đâu.
"static" có nghĩa là main () không thuộc về một đối tượng cụ thể
"void" có nghĩa là hàm main () không trả về giá trị
"chính" là tên của một chức năng. main () là đặc biệt vì nó là sự khởi đầu của chương trình.
"Chuỗi []" có nghĩa là một mảng của Chuỗi.
"args" là tên của Chuỗi [] (trong phần thân của hàm main ()). "args" không đặc biệt; bạn có thể đặt tên cho nó bất cứ điều gì khác và chương trình sẽ hoạt động như nhau.
String[] args
là một tập hợp các Chuỗi, được phân tách bằng khoảng trắng, có thể được nhập vào chương trình trên thiết bị đầu cuối. Nhiều lần hơn không, người mới bắt đầu sẽ không sử dụng biến này, nhưng nó luôn luôn ở đó trong trường hợp.Khi bạn hoàn thành mã của mình, bạn sẽ biến nó thành một tệp có phần mở rộng .java, có thể được chạy bằng cách nhấp đúp vào mã đó, nhưng cũng trong toàn bộ bảng điều khiển (thiết bị đầu cuối trên mac, cmd.exe trên windows) cho phép người dùng thực hiện nhiều thứ. Một điều là họ có thể thấy các thông báo trên bảng điều khiển (System.out.print hoặc System.out.println) mà họ không thể thấy nếu họ nhấp đúp chuột. Một điều khác họ có thể làm là chỉ định tham số, vì vậy thông thường bạn sẽ sử dụng dòng
java -jar MyCode.jar
sau khi điều hướng đến thư mục của chương trình với
cd C:My/Code/Location
trên cửa sổ hoặc
cd My/Code/Location
trên Mac (lưu ý rằng mac ít cồng kềnh hơn) để chạy mã, nhưng để chỉ định tham số bạn sẽ sử dụng
java -jar MyCode.jar parameter1 parameter2
Các tham số được lưu trữ trong mảng args mà bạn có thể sử dụng trong chương trình của mình là bạn muốn cho phép người dùng kiểm soát các tham số đặc biệt như sử dụng tệp nào hoặc chương trình có thể có bao nhiêu bộ nhớ. Nếu bạn muốn biết cách sử dụng một mảng, có lẽ bạn có thể tìm thấy một chủ đề trên trang web này hoặc chỉ cần google nó. Lưu ý rằng bất kỳ số lượng các tham số có thể được sử dụng.
Giải thích bằng ngôn ngữ của giáo dân đơn giản.
Phương thức chính mong muốn chúng ta cung cấp một số đối số khi chúng ta hướng JVM của mình đến tên lớp. Điều đó có nghĩa là, giả sử tên tệp của bạn là Try.java, bây giờ để thực thi điều này trong dấu nhắc lệnh, bạn viết "javac Try.java" để biên dịch theo sau là "java Thử" để thực thi. Bây giờ giả sử thay vì viết đơn giản là "java Thử" bạn viết "java Thử 1". Ở đây bạn đã thông qua một đối số "1". Điều này sẽ được thực hiện theo phương thức chính của bạn ngay cả khi bạn không sử dụng nó trong mã của mình.
Nếu bạn muốn kiểm tra xem phương thức chính của bạn có thực sự lấy tham số "1" hay không. Đơn giản, bên trong phương thức chính của bạn gõ như sau:
for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}
Tôi nghĩ rằng nó được bao phủ khá tốt bởi các câu trả lời ở trên String args[]
chỉ đơn giản là một chuỗi các đối số chuỗi bạn có thể chuyển đến ứng dụng của mình khi bạn chạy nó. Để hoàn thành, tôi có thể thêm rằng nó cũng hợp lệ để xác định tham số phương thức được truyền cho main
phương thức dưới dạng đối số biến (varargs) của kiểu String:
public static void main (String... args)
Nói cách khác, main
phương thức phải chấp nhận một mảng String ( String args[]
) hoặc varargs ( String... args
) làm đối số phương thức. Và cũng không có phép thuật nào với cái tên args
đó. Bạn cũng có thể viết arguments
hoặc thậm chí freddiefujiwara
như được hiển thị bên dưới, ví dụ:
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
Khi một lớp java được thực thi từ bàn điều khiển, phương thức chính là cái được gọi. Để điều này xảy ra, định nghĩa của phương pháp chính này phải là
public static void main(String [])
Thực tế là mảng chuỗi này được gọi là args là một quy ước chuẩn, nhưng không bắt buộc. Bạn sẽ điền vào mảng này tại dòng lệnh khi bạn gọi chương trình của mình
java MyClass a b c
Chúng thường được sử dụng để xác định các tùy chọn của chương trình của bạn, ví dụ như các tệp để ghi hoặc đọc từ đó.
trong public static void main (String args []) args là một mảng của đối số dòng bàn điều khiển có kiểu dữ liệu là String. trong mảng này, bạn có thể lưu trữ các đối số chuỗi khác nhau bằng cách gọi chúng tại dòng lệnh như dưới đây: java myProgram Shaan Royal sau đó Shaan và Royal sẽ được lưu trữ trong mảng dưới dạng arg [0] = "Shaan"; arg [1] = "Hoàng gia"; bạn cũng có thể thực hiện việc này một cách thủ công trong chương trình, khi bạn không gọi chúng theo dòng lệnh.
Các String[] args
tham số là một mảng của Strings truyền như thông số khi bạn đang chạy ứng dụng của bạn thông qua dòng lệnh trong hệ điều hành.
Vì vậy, hãy tưởng tượng bạn đã biên dịch và đóng gói một myApp.jar
ứng dụng Java. Dĩ nhiên, bạn có thể chạy ứng dụng của mình bằng cách nhấp đúp vào ứng dụng trong HĐH, nhưng bạn cũng có thể chạy ứng dụng đó bằng cách sử dụng dòng lệnh, như (ví dụ trong Linux):
user@computer:~$ java -jar myApp.jar
Khi bạn gọi ứng dụng của bạn chuyển một số tham số, như:
user@computer:~$ java -jar myApp.jar update notify
Các java -jar
lệnh sẽ vượt qua Strings của bạn update
và notify
để bạn public static void main()
phương pháp.
Sau đó, bạn có thể làm một cái gì đó như:
System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'
args
không nhất thiết phải được đặt tênargs
(bạn có thể đặt tên theo bất cứ điều gì bạn muốn) - mặc dù tốt nhất là tuân theo quy ước. ThỉnhString... args
thoảng bạn cũng có thể thấy , tương đương.