2010-09-16 4 views
3

Мне кажется, что PrintStream.print(Object x) и PrintStream.println(Object x) идентичны PrintStream.print(String x) и PrintStream.println(String x).println (String s) vs println (Object o)

Есть ли очевидная причина для обоих? Разве они разные? API-документы читаемость? Эффективность?

(С Autoboxing, я подозреваю, что даже печать-метода принятия примитивов в качестве аргументов лишних ... Однако эти методы предшествуют функцию Autoboxing так что объяснит.)

ответ

10

Они не делать то же самое:

print(Object x) звонки String.valueOf(x), которая возвращает:

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

Так мы имеем дополнительный toString() способ.

результат такой же, потому что String.toString() возвращает this. Но для удобства использования API пользователь не должен быть вынужден понимать эти детали.

+0

Спасибо Божо, вот что я подозревал ... – aioobe

2
PrintStream.print(Object x) 

печатает строка генерируется

String.valueOf(Object) 

Но

PrintStream.print (String х)

печатает последовательность символов, если null он будет печатать нулевой

+1

Но valueOf возвращает «null» для нулевых ссылок. – aioobe

Смежные вопросы