Pensé que los caracteres en Java son 16 bits como se sugiere en java doc. ¿No es el caso de las cadenas? Tengo un código que almacena un objeto en un archivo:¿Tiene un carácter 1 byte o 2 bytes en Java?
public static void storeNormalObj(File outFile, Object obj) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(outFile);
oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
oos.close();
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Básicamente, he tratado de almacenar una cadena "abcd"
en presentar "output"
, cuando abrí output
con un editor y eliminado la parte cadena ninguno, lo que queda es solo la cadena "abcd", que tiene 4 bytes en total. Alguien sabe por qué? ¿Java automáticamente ahorra espacio utilizando ASCII en lugar de UNICODE para cadenas que pueden ser compatibles con ASCII? Gracias
Es sólo una idea: ¿no podría ser que Java ahorra en UTF-8? – Rekin
Sí, exactamente - almacena Cadenas en UTF-8 modificado ... – MJB