【问题标题】:Why `Character.getNumericValue` for 'a' returns 10 instead of its Unicode Index 97?为什么'a'的`Character.getNumericValue`返回10而不是它的Unicode索引97?
【发布时间】:2021-06-24 17:26:09
【问题描述】:

我正在学习 Java,目前我被字符卡住了。

我知道我可以使用以下对应值之一来初始化 char:

char ch1 = 'a';
char ch2 = 97;
char ch3 = '\u0061';

请解释一下,为什么当我使用这种方法时,我得到的是 10,而不是 97?

int numValue = Character.getNumericValue(ch1); // returns 10

提前感谢您的宝贵时间! 丹尼尔

【问题讨论】:

  • 阅读the docs。 a 是十六进制的 10,或任何其他大于 10 的基数。而如果你这样做 int numValue = ch1; 那么你会得到 97。
  • 请阅读docs
  • 您可能误解了Character.getNumericValue 方法的用途。不是返回字符的Unicode index,而是返回它所代表的value。例如字符'1'代表数值1,或者罗马字符代表50。要打印字符的 Unicode 索引,您可以将其 cast 转换为 int,例如 System.out.println((int) ch1);

标签: java unicode


【解决方案1】:

来自public static int getNumericValue(int codePoint)的文档

大写字母 A-Z('\u0041' 到 '\u005A')、小写字母('\u0061' 到 '\u007A')和全角变体('\uFF21' 到 '\uFF3A' 和 ' \uFF41' 到 '\uFF5A') 形式的数值范围为 10 到 35。这与 Unicode 规范无关,Unicode 规范不会为这些 char 值分配数值。

【讨论】:

  • 你好。如果您要引用,请同时注明出处。
  • 很抱歉,因为我是新来的,我以为粘贴时默认包含它。谢谢你记得我。
猜你喜欢
  • 2018-02-23
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多