Si te preguntas por que char ocupa 2 bytes es por que al igual que otros lenguajes usa
UTF-16 para la representación de sus cadenas.
Aquí si te preguntas por que usan UTF-16 aquí hay una buena respuesta.
http://programmers.stackexchange.com...representation