【发布时间】:2014-11-22 17:01:27
【问题描述】:
我遇到了以下情况:
public int indexOf(int ch)
根据http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int),当我修改一些与字符串相关的 Java 概念时。
据我所知,当我们对java.lang.String 使用方法indexOf() 时,参数应该是char,因此我假设它是
public int indexOf(char ch)
那么,请解释一下为什么是public int indexOf(int ch)。
【问题讨论】:
-
是不是因为它把那个字符当作 Unicode 码点,而后者(Unicode 码点)又是一个 int 或数据类型为 int?
-
我的猜测是,由于它处理的是 Unicode 码位,它只需要比
char提供的范围更广。char只有 8 位,而int是 32 位。 -
@Guildenstern
char是 16 位。这对于原始的 Unicode 来说已经足够了,但现在还不够。 -
向上滚动到
Stringjavadoc 的顶部,您将看到:“字符串表示 UTF-16 格式的字符串,其中补充字符由代理对表示(请参阅第Character 类中的 Unicode 字符表示以获取更多信息)。索引值指的是字符代码单元,因此补充字符使用字符串中的两个位置。" -
@Vikram 在这里查看我的答案stackoverflow.com/a/26080888/1966247 希望它会清除您对字符和整数的概念:)
标签: java string char int indexof