Ich bin bei etwas etwas verwirrt. Ich habe ein kleines Code-Snippet geschrieben.
%Vor%Es ist ein einfacher Test. Obwohl ich nichts von der Befehlszeile übergebe als Argument aber immer noch args ist nicht null was bedeutet, dass JVM es initialisiert etwas wie String-Array. Warum ein bestimmter Grund dafür? Ich bin neugierig wissen. Alle Hinweise wären hilfreich. Vielen Dank, Ben
Wenn Sie nichts übergeben, ist args
nicht null
- es ist leer :
Es ist semantisch. Wenn keine Argumente vorhanden sind, bedeutet dies, dass die Liste der Argumente leer ist. Das bedeutet nicht, dass Argumente nicht existieren. Daher ist die args
-Liste ein leeres Array (d. H. Keine Argumente) anstelle einer Null (d. H. Argumente existieren nicht).
Ihre Überprüfung auf Null-Array ist nicht falsch, wenn nicht das Array args
, das an die Funktion main
eines Java-Programms übergeben wurde, jemals von der JVM selbst initialisiert wird, also wird das Array nie sein null, es könnte nur leer sein, aber nicht null.
Die JVM garantiert, dass das Array args
initialisiert wird. Die Überprüfung auf Null ist immer noch nicht falsch, aber es ist redundant und es hat nicht viel Sinn, vor allem hat es nicht den Sinn, den Sie ihm gegeben haben (keine Argumente auf der Kommandozeile übergeben).
Da das Array immer initialisiert wird, können Sie sicher sein, dass es nicht null ist und nur den leeren Check durchführen:
%Vor%Und Sie können sogar direkt durch das Array iterieren, ohne sich über NullPointerException Gedanken machen zu müssen:
%Vor% Das Argument der Methode main
besteht aus den String-Parametern, die von der Befehlszeile übergeben werden. Wenn keine übergeben wird, ist es nicht null
, sondern hat eine Größe von 0. Probieren Sie einfach:
Sie können sehen, dass eine Ausnahme ausgelöst wird:
%Vor%Der jvm erstellt und übergibt alle Argumente als String [] namens "args". Dies ist (neben anderen Gründen) der Fall, damit wir nicht nach dem Argument args suchen müssen. Es ist eine kleine Sache, aber es spart eine kleine Menge Zeit.
überprüfe die Größe des args string arrays, wenn seine Null ist, als wenn nichts darin ist, und wenn die Größe größer als 1 ist, wenn etwas darin ist, versuche einen Haltepunkt zu setzen (wenn du IDE benutzt) oder Iterieren über Array, um den Inhalt des Arrays zu sehen.
Tags und Links java