为什么将 int 转换为 Character 包装器对象后缀为每个字符前的 '\u000'?

Why does converting an int to Character wrapper object suffix '\u000' before each character?

以下是查找两个字符串之间唯一不同的附加字母表的解决方案。

 public char findTheDifference(String s, String t) {
        int sSum = 0;
        int tSum = 0;
        for(int i = 0; i < s.length(); i++){
            sSum = sSum + Character.getNumericValue(s.charAt(i)); 
        }
        for(int j = 0 ; j < t.length(); j++){
            tSum = tSum + Character.getNumericValue(t.charAt(j));
        }
        return (char)(tSum-sSum);    
    }

它returns '\u000e' 而不是 'e'.

示例输入:

String1 = "abcd"
String2 = "abecd"

输出="e"

问题: 1) 为什么返回'\u000e'?我知道如果我在 for loops 中删除 Character.getNumericValue,我会得到 'e'。但我想了解为什么使用它会添加 \u000?

问题是 Character.getNumericValue() 使用特定规则将字符转换为数字 explained here

特别是,您使用的字母 abcde 会转换为数字 10 , 11, 12, 13, 14 - 此方法假定您希望它们是十六进制等数字系统中的数字。