est ce qu une variable de type String est initialise par dedault à null?
moi j dirai faux mais le prof nous avait dit que c'etait VRAI
est ce qu une variable de type String est initialise par dedault à null?
moi j dirai faux mais le prof nous avait dit que c'etait VRAI
Bonjour,
Navré de te décevoir (on aime toujours contredire son prof n'est-ce pas ;) ) mais sur le fond ton prof à raison quoi qu'on puisse un peu pinailler. Si tu veux l'impressioner voilà:
Regarde cette classe
Il y a deux chaînes dedans. s_null membre de la classe et s variable locale à la méthode run
voici le by-code désassemblé:
Si tu regardes le corps de la méthode run, tu n'y vois pas trace de s. S est considéré non initialisée (par le compilateur) donc là tu peux contredire (un peu) ton prof car s n'est pas à null. Mais attention tu peux ne le contredire qu'un peu car s n'est pas utilisable non plus. En fait il n'existe pas de référence sur s, si tu écris:
Le compilateur va le refuser justement parce que s n'est pas initialisé *du tout* et qu'il n'y a pas de référence définie. Mais comme il n'est pas initialisé on peut dire sur le bout des lèvres qu'il n'est pas à null stricto sensu ;)
Par contre si tu regardes s_null, alors là tu as null. Et si tu essaies le code il va te lever une NullPointerException parce que là il existe bien une référence sur s_null et elle est à null. C'est ce que ton prof a voulu dire je pense et il a raison.
Comme je n'aime pas Java, je te suggère de troller un peu avec ton prof en lui disant que Java n'est pas un langage cohérent avec lui même puisque dans un cas il crée une référence null et pas dans l'autre cas ;)