我正在通过Daniel liang在第9章"字符串"中介绍"Java编程第9版"来学习Java我遇到过这段代码:
public static int hexCharToDecimal(char ch){
if (ch >= 'A' && ch <= 'F')
return 10 + ch - 'A';
else
return ch - '0';
}
Run Code Online (Sandbox Code Playgroud)
oki所以有人可以解释刚刚发生在这里的事情吗?如何添加,整数中的子字符以及它背后的含义是什么,谢谢.
关注我对ASCII值的讨论,即使我已经包含了Unicode字符.
来自Docs
char数据类型是单个16位Unicode字符.
char可以表示为:
char和max:'\u0000' 需要注意的是'\uffff'和0 == \u0000-以及介于两者之间的.它们是相应的值.
在你的代码中,字符由它们的ASCII值表示来进行算术运算(整数从0到65,535).
例如,char 65,535 == \uffff可以用其int(ASCII)值表示char:
System.out.print('A'); // prints A
System.out.print((int)('A')); // prints 65 because you casted it to an int
Run Code Online (Sandbox Code Playgroud)
注意,a char c = 'A';是一个16位有符号整数,所以即使a char c = 65;也是16位,a 'A' == 65(65,535)的最大整数值超过a 'A'(32,767)的最大整数值.因此,65从一个演员到一个short不能总是工作.并且a的最小整数值char是0,而a的最小整数值char是-32,768.
对于你的代码,让我们说char是 short
return 10 + ch - 'A';
Run Code Online (Sandbox Code Playgroud)
将返回(short)所以它将返回char
出于所有意图和目的,它将char数据类型"转换" 为整数值,然后进行基本算术运算.该short炭可以通过它的整数ASCII值表示char
让我们说炭是 'D'
if (ch >= 'A' && ch <= 'F')
Run Code Online (Sandbox Code Playgroud)
所以它会
return ch - '0';
Run Code Online (Sandbox Code Playgroud)
哪会返回'D' == 68所以它会返回68
| 归档时间: |
|
| 查看次数: |
26417 次 |
| 最近记录: |