Zaczynam pisać programy w Javie. Co oznacza następujący kod Java?
public static void main(String[] args)
Co to jest
String[] args
?Kiedy ich użyjesz
args
?
Kod źródłowy i / lub przykłady są lepsze niż abstrakcyjne wyjaśnienia
Zaczynam pisać programy w Javie. Co oznacza następujący kod Java?
public static void main(String[] args)
Co to jest String[] args
?
Kiedy ich użyjesz args
?
Kod źródłowy i / lub przykłady są lepsze niż abstrakcyjne wyjaśnienia
Odpowiedzi:
W Javie args
zawiera dostarczone argumenty wiersza polecenia jako tablicę String
obiektów.
Innymi słowy, jeśli uruchomisz swój program, java MyProgram one two
wówczas args
będzie on zawierać ["one", "two"]
.
Jeśli chcesz wypisać zawartość args
, możesz po prostu przejść przez nie w ten sposób ...
public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
args
gwarantowane jest oddzielenie spacją niezależnie od systemu operacyjnego?
-version
na przykład to java -version
i java.exe -version
, ale nie java.exe /version
(próby załadowania klasy głównej .version
). Tylko moje 2 centy, jeśli ktoś kiedykolwiek się na to natknie.
Są to argumenty wiersza poleceń w Javie.
Innymi słowy, jeśli biegniesz
java MyProgram one two two
Następnie args
zawiera:
[ "jeden dwa" ]
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
Powodem tego jest skonfigurowanie aplikacji do działania w określony sposób lub dostarczenie potrzebnych informacji.
Jeśli dopiero zaczynasz korzystać z Javy, zdecydowanie polecam przeczytanie oficjalnych samouczków Java TM firmy Oracle .
args
zawiera argumenty wiersza polecenia przekazywane do programu Java po wywołaniu. Na przykład, jeśli wywołam program w ten sposób:
$ java MyProg -f file.txt
Wtedy args
będzie tablica zawierająca ciągi "-f"
i "file.txt"
.
javac MyProg.java
a następnie uruchomić java MyProg -f file.txt
. Czy jest ku temu powód, ponieważ nigdzie nie wspomniano w odpowiedziach?
.class
pliku.
Poniższa odpowiedź jest oparta na moim zrozumieniu i pewnym teście.
Co to są argumenty String []?
Ans->
String [] -> Jak wiemy, jest to prosta tablica String.
args -> to nazwa tablicy może być dowolna (np. a, ar, argument, parametr, parametr) bez problemów z kompilatorem i uruchomionym, a także przetestowałem.
Np.
1) public static void main (String [] argument)
2) public static void main (parametr String [])
Kiedy użyjesz tych argumentów?
Ans->
Główna funkcja została zaprojektowana bardzo inteligentnie przez programistów. Rzeczywiste myślenie jest bardzo głębokie. Który jest zasadniczo opracowany z uwzględnieniem C & C ++ na podstawie argumentu wiersza poleceń, ale obecnie nikt go nie używa.
Rzecz 1 - Użytkownik może wprowadzić dowolny typ danych z wiersza polecenia może być Liczba lub Ciąg i niezbędne do zaakceptowania go przez kompilator, jakiego typu danych powinniśmy użyć? zobacz rzecz 2
Thing 2- String to typ danych, który obsługuje wszystkie pierwotne typy danych, takie jak int, long, float, double, byte, shot, char w Java. Możesz go łatwo przeanalizować w dowolnym prymitywnym typie danych.
Np . Następujący program jest skompilowany i uruchomiony, a ja również przetestowałem.
Jeśli dane wejściowe to -> 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
}
}
Nawet jeśli OP mówi tylko o String[] args
, chcę dać pełny przykład public static void main(String[] args)
.
Public
: jest modyfikatorem dostępu , który określa, kto może uzyskać dostęp do tej metody. Publiczny oznacza, że ta metoda będzie dostępna dla dowolnej klasy (jeśli inne klasy będą mogły uzyskać dostęp do tej klasy).
Static
: to słowo kluczowe, które identyfikuje rzecz związaną z klasą. Oznacza to, że dana metoda lub zmienna nie jest związana z instancją, ale z klasą. Można uzyskać do niego dostęp bez tworzenia instancji klasy.
Void
: służy do zdefiniowania typu zwrotu metody. Określa, co metoda może zwrócić. Void oznacza, że Metoda nie zwróci żadnej wartości.
main
: to nazwa metody. Ta nazwa metody jest przeszukiwana przez JVM jako punkt początkowy dla aplikacji z konkretną sygnaturą.
String[] args
: jest parametrem głównej metody.
Jeśli zajrzysz do kodu źródłowego 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;
...
Widać, że metoda początkowa w Javie musi mieć nazwę main
i musi mieć określony podpispublic static void main(String[] args)
Kod mówi nam również, że public static void main(String[] args)
nie został naprawiony, jeśli zmienisz kod w (jdk-src \ j2se \ src \ share \ bin \ java.c) na inny podpis, będzie działał, ale jego zmiana spowoduje inne możliwe problemy z powodu specyfikacji Java
Offtopic: Minęło 7 lat, odkąd OP zadał to pytanie, domyślam się, że OP może teraz odpowiedzieć na swoje własne pytanie.
String [] args
jest także sposobem deklarowania tablicy napisów w Javie.
W sygnaturze tej metody tablica args
będzie wypełniona wartościami po wywołaniu metody (jak pokazują inne przykłady tutaj). Ponieważ się uczysz, warto zrozumieć, że ta args
tablica jest taka, jakbyś sam ją stworzył w metodzie, jak w tym:
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
}
Rozpadłbym się
public static void main(String args[])
w częściach.
„public” oznacza, że main () można wywołać z dowolnego miejsca.
„statyczny” oznacza, że main () nie należy do określonego obiektu
„void” oznacza, że main () nie zwraca żadnej wartości
„main” to nazwa funkcji. main () jest wyjątkowy, ponieważ jest początkiem programu.
„Ciąg []” oznacza tablicę Ciąg.
„args” to nazwa ciągu [] (w treści main ()). „args” nie jest wyjątkowy; możesz to nazwać cokolwiek innego, a program będzie działał tak samo.
String[] args
jest zbiorem ciągów znaków, oddzielonych spacją, które można wpisać w programie na terminalu. Więcej niż nie, początkujący nie będzie używał tej zmiennej, ale zawsze jest na wszelki wypadek.Po zakończeniu kodu zamienisz go w plik z rozszerzeniem .java, który można uruchomić, klikając go dwukrotnie, ale także w konsoli (terminal na komputerze Mac, cmd.exe w systemie Windows), co pozwala użytkownikowi to zrobić wiele rzeczy. Jedną rzeczą jest to, że widzą komunikaty konsoli (System.out.print lub System.out.println), których nie widzą po dwukrotnym kliknięciu. Inną rzeczą, jaką mogą zrobić, jest określenie parametrów, więc normalnie użyłbyś linii
java -jar MyCode.jar
po przejściu do folderu programu za pomocą
cd C:My/Code/Location
w systemie Windows lub
cd My/Code/Location
na Macu (zauważ, że Mac jest mniej niezręczny), aby uruchomić kod, ale aby określić parametry, których chcesz użyć
java -jar MyCode.jar parameter1 parameter2
Te parametry przechowywane w tablicy args, których można użyć w programie, pozwalają użytkownikowi kontrolować parametry specjalne, takie jak używany plik lub ilość pamięci, jaką program może mieć. Jeśli chcesz wiedzieć, jak korzystać z tablicy, prawdopodobnie możesz znaleźć temat na tej stronie lub po prostu google. Pamiętaj, że można użyć dowolnej liczby parametrów.
Wyjaśnienie w prostym języku laika.
Główna metoda oczekuje od nas podania pewnych argumentów, gdy kierujemy naszą maszynę JVM do nazwy klasy. Oznacza to, że załóżmy, że twoja nazwa pliku to Try.java, teraz aby wykonać to w wierszu polecenia, napisz „javac Try.java” do skompilowania, a następnie „java Try” do wykonania. Załóżmy teraz, że zamiast pisać po prostu „java Spróbuj” piszesz „java Spróbuj 1”. Podałeś tutaj argument „1”. Zostanie to zrobione przez twoją główną metodę, nawet jeśli nie użyjesz jej w kodzie.
Jeśli chcesz sprawdzić, czy Twoja główna metoda rzeczywiście wzięła argument „1”, czy nie. Po prostu w głównej metodzie wpisz:
for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}
Myślę, że jest dość dobrze uwzględniony w powyższych odpowiedziach, które String args[]
są po prostu tablicą argumentów łańcuchowych, które można przekazać aplikacji podczas jej uruchamiania. Na zakończenie mogę dodać, że poprawne jest również zdefiniowanie parametru metody przekazywanego do main
metody jako argument zmiennej (varargs) typu String:
public static void main (String... args)
Innymi słowy, main
metoda musi zaakceptować tablicę String ( String args[]
) lub varargs ( String... args
) jako argument metody. Nie ma też magii z tym imieniem args
. Równie dobrze możesz pisać, arguments
a nawet freddiefujiwara
jak pokazano poniżej, np .:
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
Kiedy klasa Java jest wykonywana z konsoli, wywoływana jest główna metoda. Aby tak się stało, definicja tej głównej metody musi być następująca
public static void main(String [])
Fakt, że ta tablica ciągów nazywana jest args, jest standardową konwencją, ale nie jest ściśle wymagany. Wypełniasz tę tablicę w wierszu poleceń, gdy wywołujesz swój program
java MyClass a b c
Są one powszechnie używane do definiowania opcji programu, na przykład plików do zapisu lub odczytu.
w public static void main (String args []) args to tablica argumentów linii konsoli, których typ danych to String. w tej tablicy można przechowywać różne argumenty łańcuchowe, wywołując je w wierszu poleceń, jak pokazano poniżej: java myProgram Shaan Royal, a następnie Shaan i Royal będą przechowywane w tablicy jako arg [0] = "Shaan"; arg [1] = „Royal”; możesz to zrobić ręcznie również w programie, gdy nie wywołujesz ich w wierszu poleceń.
Ten String[] args
parametr to tablica ciągów znaków przekazywanych jako parametry podczas uruchamiania aplikacji za pomocą wiersza polecenia w systemie operacyjnym.
Wyobraź sobie, że skompilowałeś i spakowałeś myApp.jar
aplikację Java. Możesz oczywiście uruchomić aplikację, klikając ją dwukrotnie w systemie operacyjnym, ale możesz też uruchomić ją za pomocą wiersza poleceń, na przykład (na przykład w systemie Linux):
user@computer:~$ java -jar myApp.jar
Gdy wywołujesz aplikację, przekazując niektóre parametry, takie jak:
user@computer:~$ java -jar myApp.jar update notify
java -jar
Polecenia minie struny update
i notify
do swojej public static void main()
metody.
Następnie możesz zrobić coś takiego:
System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'
Oprócz wszystkich poprzednich komentarzy.
public static void main(String[] args)
można zapisać jako
public static void main(String...arg)
lub
public static void main(String...strings)
args
niekoniecznie musi być nazwaneargs
(możesz nazwać to, co chcesz) - chociaż najlepiej postępować zgodnie z konwencją.String... args
Od czasu do czasu możesz także zobaczyć , co jest równoważne.