J'ai un code comme la question est de canaliser la ligne system.out.println (obj.boolantanvalue ()); code> lancer
nullpointerexception < / code> dans n'importe quelle situation? p> p>
4 Réponses :
Non, lorsque vous cognez une valeur primitive dans son type d'emballage équivalent, le résultat n'est jamais nul. p>
C'est parce qu'un type primitif peut jamais b> NULL.
non fort>, p>
et aussi
Ce n'est pas vraiment rien à voir avec les valeurs par défaut. Il s'agit du fait que les types primitifs sont des types de valeur - la valeur d'un int code> est l'entier lui-même, pas une référence ... alors comment pourrait-il être
null code >?
@Jon, j'ai mentionné la valeur par défaut juste pour faire comprendre que dans tous les cas, la primitive ne tiendra pas null
Life.java: Pour moi, cela confond des choses plus que de les rendre plus claires. La différence entre les types de valeur et les types de référence a très peu à voir avec les valeurs par défaut.
@Jon j'ai aussi compris qu'après avoir lu votre commentaire, réponse mise à jour.
Il ne jettera jamais une NPE et aussi si vous utilisez Java> = 1,5, vous n'avez pas besoin de le jeter. Il est appelé autoboxing qui est introduit de JDK 1.5. P>
Juste pour être pédants, vous pourriez avoir défini System.out pour être NULL, alors cette ligne générera une NPE.
Mais ce serait étrange. P>
Chaque fois que je le vois, je me demande pourquoi les gens n'écrivent aucun constructeur args et appeler explicitement super ().
Parce que quelqu'un pourrait ajouter un autre constructeur et que vous voulez vous assurer que le constructeur de Noarags est toujours présent. Parce qu'il est logiquement plus explicite. Bien que je dois admettre dans un extrait de code illustratif, ce n'est pas très utile.
Il n'y a pas non plus besoin d'appeler super ().