for(Character c : s.toCharArray()){
int val = c -'a';
int val2 = Character.getNumericValue(c) - Character.getNumericValue('a');
System.out.println(val + " " + val2);
}
System.out.println((int)'A'); // prints 65, ASCII value
System.out.println(Character.getNumericValue('A')); // prints 10 represents Unicode character 'A'
现在,如果我们研究一下你的例子,区别就很明显了。
String s = "Wasi";
for (Character c : s.toCharArray()) {
int val = c - 'a';
int val2 = Character.getNumericValue(c) - Character.getNumericValue('a');
System.out.println(val + " " + val2);
}
3条答案
按热度按时间8oomwypt1#
重要的区别是
区分大小写,
行为如果
c
不是字母或数字。所以呢
val = c - 'a'
区分大小写,如果c
不是一封信。另一方面,val2 = Character.getNumericValue(c) - Character.getNumericValue('a')
只对很小范围的c
,但不区分大小写。例如,
Character.getNumericValue('B') - Character.getNumericValue('a')
是1,因为大写和小写没有区别。'B' - 'a'
是-31。只是因为。如果你想两全其美-适用于广泛的输入,但也不区分大小写,你可以写
p8h8hvxi2#
我想如果你只想得到字母表的位置,
然后使用:
因为它不考虑大小写。
另一方面,它们是完全不同的东西。如果查看“a”ascii值65和“a”ascii值97,但两者的数值都是相同的10。
b0zn9rqh3#
我相信你首先需要知道ascii和unicode的区别。
ascii定义了128个字符,这些字符Map到数字0–127。unicode定义了(少于)221个字符,类似地,这些字符Map到数字0–221(尽管当前并不是所有的数字都被分配,有些是保留的)。所以,简而言之,unicode是ascii的超集。
参考资料:ascii和unicode有什么区别?
例子
使用ascii值和unicode字符表示的值不相同。例如。
现在,如果我们研究一下你的例子,区别就很明显了。
输出
所以,在判断哪一个更好之前,你应该先想想你到底需要哪一个。
还有一件重要的事要注意,
Character.getNumericValue()
不考虑字符的大小写。例如,
Character.getNumericValue('A')
以及Character.getNumericValue('a')
,两者都返回值10。