2010-10-08 19 views
1
public class Test { 

    Integer i; 
    int j; 

    public static void main (String [] args) { 
     Test t = new Test(); 
     t.go(); 
    } 

    public void go() { 
     j=i; 
     System.out.println(j); 
     System.out.println(i); 
    } 
} 

Sortie: Exception dans le thread "principal" java.lang.NullPointerException à Test.go (Test.java:12) à Test.main (Test.java:8)Pourquoi est-ce que j'obtiens une exception de pointeur nul dans ce code?

+2

Fonctionne pour moi ... pouvez-vous coller l'erreur _verbatim_? –

Répondre

3

C'est évidemment pas l'erreur. Vous obtiendrez une exception NullPointerException d'exécution car vous déballez une référence null (i) dans une primitive (j). Voir JLS §5.1.8.

La raison i est null est que les champs d'instance sont initialisés à 0, null ou false par défaut.

+0

A juste titre. +1 Mais l'erreur «aller ne peut pas être résolue ou n'est pas un champ» n'est pas du tout à ce sujet, je me demande. Ce devrait être NPE. –