繁体   English   中英

Java - public int indexOf(int ch)

[英]Java - public int indexOf(int ch)

我遇到了以下情况:

public int indexOf(int ch)

当我修改一些与字符串相关的Java概念时,根据http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)

据我所知,当我们为java.lang.String使用方法indexOf() ,该参数应该是char ,因此我假设它是

public int indexOf(char ch)

那么,请解释一下为什么它是public int indexOf(int ch)

Unicode包含许多超过2 ^ 16个字符。 Java'char'和'String'使用Unicode转换格式(UTF-16)来表示完整的字符集。 基本多语言平面中的字符表示为单个16位“字符”。 其余部分由代理对表示:来自为此目的保留的集合中的两个特殊16位值。

另一种表示形式是UTF-32。 在此表示中,每个字符都是一个32位项,句点。

例如,楔形文字就在SMP中; 块的第一个字符是U + 12000。 在UTF-32中,这只是0x12000。 在UTF-16中,它是"\?\?" 这是一些照片。

CharacterString类(以及其他类)提供了一些操作UTF-32字符的方法,以方便使用。 你在询问其中一个。 每当您将'int'视为字符的数据类型时,这就是'int'包含的内容:UTF-32值。 不难看出使用单个UTF-32值而不是一对代理进行某些操作会更方便。

请注意,这与组合和非组合重音无关。 á可以用Unicode表示为一个或两个UTF-16字符,但不涉及代理。 U + 0061(a),U + 00E1(具有预先组合的重音)和U + 0301(组成重音)的所有三个都是普通的BMP字符。 因此,即使在UTF-32中,您也可以使用两项序列:U + 0061,U + 0301。

ICU4J库提供了一套更完整的UTF-32类和方法。

每个char都有一个int值,你可以使用它来获取该char,你可以通过将一个char赋给int变量以相同的方式将图表转换为int尝试以下行

char ch = 65;
System.out.println(ch);
int i = 'A';
System.out.println(i);

我在循环中使用char值,只是因为每个char都有一个int值。 尝试这段代码,它将打印出从A到Z的字母表及其等效的int值

    for(char j = 'A'; j <= 'Z'; j++){
        System.out.println("int "+((int) j)+" = "+j);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM