我想知道为什么参数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