que pila memoria diferencia configurar java unicode utf-16 widechar

java - pila - que es el heap memory



¿Por qué la primitiva de carbón Java ocupa 2 bytes de memoria? (7)

¿Hay alguna razón por la que el tipo de datos primitivo de Java Char sea de 2 bytes a diferencia de C, que es de 1 byte?

Gracias


Como sabemos c apoya ASCII donde java admite Unicode que contiene 3 cosas que es 1-ASCII 2-extendido ASCII 3-idioma local carácter ASCII es un subconjunto de unicode.ASCII solo admite idioma inglés donde Unicode admite multinacionales idioma.Otherwise java el carácter está codificado dentro de UTF-16 que utiliza 2 bytes. Por todo el motivo y como Unicode es la versión extendida de ASCII, por lo que usa 16 bit insted de 8 bit.


En Java, un carácter está codificado en UTF-16 que usa 2 bytes, mientras que una cadena C normal es más o menos un grupo de bytes. Cuando se diseñó C, se consideró que usar ASCII (que solo cubre el conjunto de caracteres en inglés) era suficiente, mientras que los diseñadores de Java ya contaban con la internacionalización. Si desea utilizar Unicode con cadenas C, la UTF-8 es la preferida, ya que tiene ASCII como un subconjunto y no utiliza el byte 0 (a diferencia de UTF-16), que se utiliza como un final de cadena marcador en C. Este marcador de fin de cadena no es necesario en Java ya que una cadena es un tipo complejo aquí, con una longitud explícita.


En idiomas anteriores como C, se usan notaciones ASCII . Y el rango es 127, para 127 símbolos únicos y caracteres de idioma .

Mientras que JAVA viene con una característica llamada "INTERNACIONALIZACIÓN" , es decir, todos los caracteres legibles por el ser humano (incluidos los símbolos regionales ) también se agregan a él, y el rango también aumenta, por lo que se requiere más memoria, el sistema para unificar todos estos símbolos "Sistema Unicode estándar" , y para que esta Unificación requiera ese byte adicional en JAVA.

El primer byte permanece como está y los caracteres ASCII se alinean a 127 como en C, C ++ pero se añaden caracteres unificados.

Así que 16 bits para char en JAVA y 8 bits para char en C.


Java se usa como internacionalización, por lo tanto, su trabajo en diferentes idiomas y la necesidad de espaciar más de un byte, es por eso que toma 2 bytes de espacio en char. por ejemplo, el idioma chino no puede pasar un byte de char.


Tutoriales de Java ™: el tipo de datos char es un único carácter Unicode de 16 bits. Tiene un valor mínimo de ''/ u0000'' (o 0) y un valor máximo de ''/ uffff'' (o 65,535 inclusive).


char en Java está codificado en UTF-16, lo que requiere un mínimo de 16 bits de almacenamiento para cada personaje.


Cuando se diseñó originalmente Java, se anticipó que cualquier carácter Unicode encajaría en 2 bytes (16 bits), por lo que el char y el Character se diseñaron en consecuencia. De hecho, un carácter Unicode ahora puede requerir hasta 4 bytes. Por lo tanto, UTF-16, la codificación interna de Java, requiere que los caracteres suplementarios usen 2 unidades de código. Los caracteres en el plano multilingüe básico (los más comunes) todavía usan 1. Se usa un char Java para cada unidad de código. Este artículo de Sun lo explica bien.