2010-09-16 3 views
3

Il me semble que PrintStream.print(Object x) et PrintStream.println(Object x) sont identiques à PrintStream.print(String x) et PrintStream.println(String x).println (Chaîne s) vs println (Objet o)

Y at-il une raison évidente d'avoir les deux? Sont-ils différents d'une manière ou d'une autre? API-docs-lisibilité? Efficacité?

(Avec autoboxing, je soupçonne que même les impressions méthodes prenant primitives comme arguments sont redondants ... Cependant, ces méthodes sont antérieures à la fonction autoboxing donc c'est explicable.)

Répondre

10

Ils ne sont pas faire la même chose:

print(Object x) appels String.valueOf(x), qui retourne:

(obj == null) ? "null" : obj.toString(); 

Nous avons donc une méthode supplémentaire toString().

Le résultat est le même, car String.toString() renvoie this. Mais pour la facilité d'utilisation de l'API, l'utilisateur ne devrait pas être obligé de comprendre ces détails.

+0

Merci Bozho, c'est ce que je soupçonnais ... – aioobe

2
PrintStream.print(Object x) 

chaîne imprime générée par

String.valueOf(Object) 

Mais

PrintStream.print (String x)

imprime la séquence de caractères, si null il imprimera null

+1

Mais valueOf renvoie "null" pour les références nulles. – aioobe