Out.write() vs out.print()

Hi,

Was ist der Unterschied?
Performance?
Verwendete Klassen?
Stand der Sterne?

cu Desian

Hallo,

Was ist der Unterschied?
Performance?
Verwendete Klassen?
Stand der Sterne?

Nun, ein Blick in die API-Dokumentation eröffnet folgendes:

public void write(int b)
 Write the specified byte to this stream. If the byte is a newline and 
 automatic flushing is enabled then the flush method will be invoked.
 Note that the byte is written as given; to write a character that will be 
 translated according to the platform's default character encoding, use the 
 print(char) or println(char) methods.


public void print(int i)
 Print an integer. The string produced by String.valueOf(int) is translated 
 into bytes according to the platform's default character encoding, and these 
 bytes are written in exactly the manner of the write(int) method.

Will heißen:
Die write()-Methode schreibt einfach ein Byte, exakt so wie es ist in den Stream.
Die print()-Methode dagegen wandelt das Zeichen erst entsprechend der vom System verwendeten Zeichencodierung um, und schreibt es dann mit der write()-Methode in den Stream.

Wenn du also ein ö oder andere Zeichen, die nicht im ASCII-Satz vorkommen, wirst du mit write() eventuell auf die Nase fallen, mit print() wird dabei sichergestellt, dass das Zeichen korrekt angezeigt wird. Also bei druckbaren Zeichen am besten print() verwenden.

Langsamer ist also auf jeden Fall print(), da das schreiben in den Stream exakt gleich ist als bei write(), jedoch kommt noch die Laufzeit für die Umwandlung hinzu.

mfg
deconstruct

cu Desian

Danke!