2012-06-18 22 views
8

ASCII Prueba esta pieza de código -System.out.println() terminan en cero Código

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?"); 
    } 
} 

La salida es -

c--> 

¿Por qué System.out.println() terminar en el código ASCII cero?

He intentado esto en JCreator LE en Windows 7.

+1

Probablemente trasladado desde cadenas terminadas en nulo estilo C. – Mysticial

+0

Se imprime para mí. \ u0000 es un carácter nulo pero Java no termina cadenas con nulo. –

+0

Imprime bien para mí ... – NominSim

Respuesta

18

Depende de lo que su consola hace (o cualquier otra cosa que está manejando System.out). System.out propagará toda la información muy bien, y si su consola no concede ningún significado particular a U + 0000, entonces todo estará bien. Sin embargo, muchos controles UI serán que lo tratarán como un carácter de terminación. Esta no es la "falla" de Java, es el control de la interfaz de usuario en sí.

(Sólo como referencia, se ejecuta el código dentro de un símbolo del sistema de Windows en Windows 7 está muy bien para mí.)

+0

Ok! ¡Gracias por esto! – CodeBlue

+9

¡Dios mío es Jon Skeet! No puedo ... parar ... ¡voto favorable! –

+0

Sí, lo probé en Windows Command Prompt y funcionó allí. – CodeBlue

2

En C/C cadenas estilo ++ al final de la cadena está determinada por la ubicación de la terminación nulo -carácter (el personaje con valor 0, como en tu caso). Lo más probable es que la llamada System.out.println() pase la cadena al código fuente del sistema operativo, que cree que la cadena terminó en el carácter nulo, y solo se imprime hasta ese punto

Cuestiones relacionadas