Zacząłem trochę uczyć się Javy z książki http://helion.pl/ksiazki/java_podstawy_wydanie_viii_cay_s_horstmann_gary_cornell,javpd3.htm, nie bardzo też podobał mi się użyty termin inicjacja zmiennej, zamiast inicjalizacja zmiennej, ale to nie o moje gusta teraz chodzi.
Z tego co wyczytałem, to w Javie łańcuchy tekstowe czyli po prostu Stringi to w uproszczeniu ciągi wartości typu char. Char (odpowiednik obiektowy Character), to typ 16 bitowy i każdy osobny znak (a precyzyjniej każda jednostka kodowa UTF-16), zajmuje 16 bitów.
Czy nie lepiej (oszczędniej) byłoby znaki kodować jednak w UTF-8 zamiast UTF-16, przecież tam jeden znak z ASCII, to tylko 8 bitów (tak prawdę pisząc to 7) ? Albo chociaż dać programistom wybór.
W Javie wprawdzie nie ma przedrostka unsigned dla typów, ale czy można traktować typ char jako ekwiwalent do unsigned short ? Sprawdziłem i zmiennej typu char można podawać wartości liczbowe od 0 do 65535.
Próbowałem w Eclipsie wyświetlić znaki UTF-16 występujące jako pary surogatów, czyli te, które nie należą do przestrzeni BMP np. symbole muzyczne http://unicode.org/charts/PDF/U1D100.pdf, ale konsola uporczywie zwraca znak "kwadracik", o ile dobrze rozumiem, jest to wina czcionek, że nie mają tych znaków. Jak sprawdziłem na tabelce ze strony http://en.wikipedia.org/wiki/Unicode_typeface#10000-1D7FF wszystkie czcionki mają w zakresie współrzędnych kodowych 1D100–1D1FF brak obsługi, więc nic dziwnego, że Eclipse wymiękło. Trochę to coś nie tak, z jednej strony mamy standard Unicode, z drugiej braki w czcionkach. Żeby jeszcze tylko z SMP (pary surogatów UTF-16) brakowało, a tu widze, że nawet w ramach BMP są solidne braki :/
Będę wdzięczny za wszelkie merytoryczne komentarze :)