No entiendo la diferencia de salida entre System.out.println ((char) b) y System.out.write ((char) b)

Dennis Versluis:

No entiendo la diferencia de salida entre System.out.println ((char) b) y System.out.write ((char) b) en este ejemplo.

class WriteDemo {
    public static void main(String args[])
    throws IOException {
    byte data[] = new byte[10];
    int b;
    b = 'é';
    System.out.println((char)b);
    System.out.write((char)b);
    System.out.write('\n');
    }
}

(B (char)) grabados System.out.println E mientras que System.out.write ((char) b) imprime Ú.

No entiendo por qué?

Probablemente tiene algo que ver con los bits se descartan pero simplemente parece que no puede averiguar cómo llegar a la letra u.

Nexevis:

writeescribe un byte de la secuencia de salida.

printescribe un carácter de la secuencia de salida.

printtambién utiliza codificación por defecto de la plataforma mientras se writeva a escribir el byte conforme a las indicaciones de los documentos aquí .

Presupuesto de los writedocumentos:

escribir un carácter que será traducido según la codificación de caracteres por defecto de la plataforma, utilice la impresión (char) o println métodos (carbón de leña).

Nota: chares 16 bits, mientras que bytees de 8 bits, es decir, una chares de dos bytesperdiendo así la información en el proceso de conversión.

EDITAR:

La razón por la cual writese la salida de ese personaje para usted es porque estás haciendo básicamente lo siguiente:

System.out.write((byte) 233); //233 is Integer.valueOf('é')

Que es lo mismo que esto:

System.out.write(0xE9);

Así que en la codificación que está utilizando en el que se imprima 0xE9es Ú.

Además, la razón por la cual éstos final de la impresión como dos caracteres diferentes en la consola es probablemente debido al charconseguir traducida a la codificación correcta para printy luego imprimir en la misma codificación que se traduce, sino porque writeescribe el byte literal y la consola intentos de traducir el byte en la codificación actual de todos modos después del hecho, da lugar a un carácter incorrecto aparece. El personaje que aparece cambiará dependiendo de cuál es la codificación de la consola se establece en, comúnmente Cp1252o UTF-8.

Si cambia su consola de codificación para ISO-8859-1, a continuación, 0xE9se imprimirá la émanera correcta y en ambos casos se incluyeron.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=238999&siteId=1
Recomendado
Clasificación