Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Indexof()参数类型_Java_Types_Arguments_Indexof - Fatal编程技术网

Java Indexof()参数类型

Java Indexof()参数类型,java,types,arguments,indexof,Java,Types,Arguments,Indexof,示例1:indexOf(intch)//ex:s.indexOf('y'); 示例2:替换(原始字符、替换字符) 在这两个示例中,参数都应为char类型。虽然在示例1中提到了int,但在结尾处它应该是带有单引号的参数,即字符。它可能直接像char ch一样。为什么存在int类型?他们可以像示例2一样指定它 这有什么内部原因吗?为什么在某些情况下语法不同。必须有这样做的理由。请给我解释一下 您需要了解char数据类型和符号的代码点之间的区别 char只是一个无符号的16位值。但代码点是一个表示一个

示例1:indexOf(intch)//ex:s.indexOf('y'); 示例2:替换(原始字符、替换字符)

在这两个示例中,参数都应为char类型。虽然在示例1中提到了int,但在结尾处它应该是带有单引号的参数,即字符。它可能直接像char ch一样。为什么存在int类型?他们可以像示例2一样指定它


这有什么内部原因吗?为什么在某些情况下语法不同。必须有这样做的理由。请给我解释一下

您需要了解
char
数据类型和符号的代码点之间的区别

char
只是一个无符号的16位值。但代码点是一个表示一个unicode字符的数字。代码点使用编码进行编码,它们可以由一个或两个(所谓的代理项对)16位值表示。java中的字符串使用这种编码,因此每个字符可以由一个或两个
char
值表示

在绝大多数情况下,代码点只使用一个值等于代码点的
char
,因此,许多程序员忽略了这一差异。但是
indexOf
方法知道它是什么,如果提供了一个大于0xFFFF的数字,并且它是一个有效的代码点,那么该方法将查找两个代理值的序列

注意,该方法的结果,因为字符串中的所有偏移量和
.length()
都在
字符中,而不是在实际代码点中。但是,如上所述,在大多数情况下,您可以忽略差异

请参见

可能的副本