我想知道爲什麼參數indexOf方法一個int,當描述說char時。爲什麼參數string.indexOf方法是一個int在Java
公衆詮釋的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);
一]基本上,我感到困惑的是int類型的Java是32位,而Unicode字符爲16位。
b]爲什麼不使用字符本身而不是使用int。這是任何性能優化?難以表達的字符比int更難嗎?怎麼樣 ?
我認爲這應該是簡單的推理,這讓我更瞭解它!
謝謝!
Thnx爲答案。好吧,所以現在我看到indexOf(int)需要一個Unicode代碼點,我的另一個問題是......爲什麼是這樣? 。爲什麼不使用16位字符? – codeObserver 2011-06-03 04:41:24
因爲一個unicode結構實際上是22位,而不是16.所以有'字符/字母'(代碼點)不能存儲在一個Java字符。這就是爲什麼一個Java字符串可能使用2個字符來存儲一個'codepoint/letter'(如果你真的想知道的話,請參見utf-16代理對)。 – MTilsted 2014-07-16 13:56:56