为什么indexOf没有从unicode给出正确的结果?

Mue*_*vid 3 java unicode indexof

如果我使用带有Unicode的Unicode表示的indexOf,我不明白为什么我没有得到正确的结果?

public class Test {
    public static void main(String[] args) {
        String strg = "Dog?Cat";
        System.out.println("String: " + strg);
        System.out.println("Char: " + strg.indexOf('?'));
        System.out.println("String: " + strg.indexOf(new String("?")));
        System.out.println("Sign: " + String.valueOf('\u0134'));
        System.out.println("Unicode: " + strg.indexOf(String.valueOf('\u0134')));
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

String: Dog?Cat
Char: 3
String: 3
Sign: ?
Unicode: -1   --> Why is it -1 ?! Why not 3 ?
Run Code Online (Sandbox Code Playgroud)

请你帮助我好吗?谢谢!

Era*_*ran 5

String.valueOf('\u0134')不是'?'角色.System.out.println打印'?'许多不可打印的字符(例如'\u0134'),但您的"Dog?Cat"String不包含该'\u0134'字符.

这会给你预期的3:

String strg = "Dog?Cat";
System.out.println("Unicode: " + strg.indexOf(String.valueOf('\u003f')));
Run Code Online (Sandbox Code Playgroud)