Zastanawiam się, dlaczego parametr indexOf metody int, gdy opis mówi char.Dlaczego parametr string.indexOf jest int w Java
public int indexOf (int ch)
Returns the index within this string of the first occurrence of the specified **character**
http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html#indexOf%28int%29
Also, both of these compiles fine:
char c = 'p';
str.indexOf(2147483647);
str.indexOf(c);
a] Zasadniczo, co jestem zagubiony int w Java jest 32-bitowy, a znaki Unicode są 16 bity.
b] Dlaczego nie używać znaku zamiast używać int. Czy to jest jakaś optymalizacja wydajności? Czy znaki są trudne do przedstawienia niż int? W jaki sposób ?
Zakładam, że powinno to być proste rozumowanie i to jeszcze bardziej informuje mnie o tym!
Dzięki!
Thnx za odpowiedź. ok, więc teraz widzę indexOf (int) oczekuje codepoint Unicode, moje inne pytanie było .. dlaczego to jest? . Dlaczego po prostu nie używać 16-bitowych znaków? – codeObserver
Ponieważ charecter w unicode ma naprawdę 22 bity, a nie 16. Istnieją "znaki/litery" (punkty kodowe), których nie można zapisać w charcie java. Z tego powodu łańcuch Java może wykorzystywać 2 znaki do przechowywania jednego "codepoint/letter" (zob. Parami zastępcze utf-16, jeśli naprawdę chcesz wiedzieć). – MTilsted