2012-06-18 4 views
8

dieses Stück Code Versuchen -Warum System.out.println() bei ASCII-Code beenden Null

public class WhitespaceTest 
{ 
    public static void main(String[] args) 
    { 
     int x = 0; 
     char c = (char) x; 
     System.out.println("c-->"+c+"<---this doesn't print?"); 
    } 
} 

Der Ausgang ist -

c--> 

Warum System.out.println() terminieren bei ASCII-Code Null?

Ich habe versucht, dies in JCreator LE unter Windows 7.

+1

Wahrscheinlich von C-style Nul-terminierte Zeichenfolgen übernommen. – Mysticial

+0

Es druckt für mich. \ u0000 ist ein Nullzeichen, aber Java terminiert Strings nicht mit einer Null. –

+0

Es druckt gut für mich ... – NominSim

Antwort

18

Es hängt davon ab, was Ihre Konsole tut (oder sonst was System.out ist der Umgang). System.out wird alle Informationen gut verbreiten, und wenn Ihre Konsole U + 0000 keine besondere Bedeutung anhängt, dann wird alles gut. Jedoch werden viele UI-Steuerelemente das als ein abschließendes Zeichen behandeln. Dies ist nicht "Fehler" von Java - es ist die UI-Steuerung selbst.

(nur als Referenz, auf Windows, dass Code innerhalb einer Windows-Eingabeaufforderung 7 ist für mich in Ordnung.)

+0

Ok !! Danke dafür! – CodeBlue

+9

OMG es ist Jon Skeet! Kann nicht ... aufhören ... upvoting !! –

+0

Ja, ich habe es nur an der Windows-Eingabeaufforderung versucht und es funktionierte dort. – CodeBlue

2

In C/C++ Strings das Ende der Schnur wird durch die Position des abschließenden Null bestimmt -Zeichen (das Zeichen mit dem Wert 0, wie in Ihrem Fall). Höchstwahrscheinlich übergibt der Aufruf System.out.println() die Zeichenfolge an das Betriebssystem wortwörtlich, die die Zeichenfolge am Nullzeichen endet und nur bis zu diesem Punkt gedruckt

Verwandte Themen