2017-01-10 2 views
0
public class Wells { 
    String str[] = null; 

    static public void main(String args[]) { 

    Wells objWells = new Wells(); 
    System.out.println(args.length);// we will NOT get null pointer exception WHY ? 

    System.out.println(objWells.str.length); // we will get null pointer exception 
    } 

} 
+0

Die 'str []' für eine neue Wells null ist null, so dass Sie eine NPE erhalten, wenn Sie versuchen, ihre Länge zu erhalten. Für den Abschnitt "warum ist' args' _not_ null ", siehe http://stackoverflow.com/questions/9605532/args-guaranteed-to-be-non-null – yshavit

+0

Die Frage wäre, warum würden Sie' str' erwarten etwas anderes als "null" sein. Wie für 'Args', wird es nie standardmäßig – AxelH

Antwort

0

In einer Hauptmethode ist das Argument nie null.

In Ihrem Objekt Sie es als null definieren, so wird es

+0

Ja sein. aber Interviewer fragte, warum Argument in der Hauptmethode nie null ist. – javafan

+0

Nun, ich bin mir nicht sicher, aber AFAIK der args-Array wird von der JVM initialisiert, so dass es immer initialisiert wird und nie null. Wenn Sie seine Leerheit überprüfen müssen, sollten Sie überprüfen, ob args.length == 0 ist – SCouto

Verwandte Themen