Example1: indexOf(int ch) //ex: s.indexOf('y');示例2:替换(字符原始,字符替换)
在这两个示例中,参数都应为char类型。虽然它在示例1中被提到为int,但在最后它是带单引号的参数,即字符。它可以直接像char ch一样。为什么存在int类型?他们可以像示例2一样指定它。
this.why有没有什么内部原因?在某些情况下,语法会有所不同。必须有这样做的理由。请给我解释一下。
发布于 2019-10-10 23:51:35
您需要了解char数据类型和符号的代码点之间的区别。
char只是一个无符号的16位数值。但是代码点是一个代表一个unicode字符的数字。代码点使用UTF-16编码进行编码,它们可以由一个或两个(所谓的代理对)16位值表示。java中的字符串使用这种编码,因此每个字符都可以由一个或两个char值表示。
在绝大多数情况下,代码点只使用一个值等于代码点的char,因此,许多程序员忽略了这一差异。但是indexOf方法理解它,如果提供了一个大于0xFFFF的数字,并且它是一个有效的代码点,那么该方法将查找两个代理值的序列。
请注意,该方法的结果,因为字符串和.length()中的所有偏移量都在chars中,而不是在实际的代码点中。但是,如上所述,在大多数情况下,您可以忽略差异。
https://stackoverflow.com/questions/58326500
复制相似问题