Lac*_*say 5 java ascii casting type-conversion
在处理以下场景时,我正在寻找Java的行为解释.据我所知,ASCII表的排列方式使得字符的值5大于5个位置0.这允许在char上进行计算而不转换为int,如第一个例子中所示.
我不明白为什么Java似乎不一致地处理何时从ASCII表提供值以及何时对字符进行计算,就好像它们是整数一样.
int x = '5' - '0';
Run Code Online (Sandbox Code Playgroud)
产量 x = 5;
int x = '5'
Run Code Online (Sandbox Code Playgroud)
产量 x = 53;
现在举一些例子,这引起了混乱.
int x = '0' + 1 - '5'
Run Code Online (Sandbox Code Playgroud)
产量 x = -4
int y = '5' - '0' + '1'
Run Code Online (Sandbox Code Playgroud)
产量 54
int y = '5' - 0 + '1'
Run Code Online (Sandbox Code Playgroud)
产量 102
Java似乎正在进行隐式类型转换,但是Java如何推断它应该使用哪个int/char表示?
只需将char转换写入ASCII代码(在您的语句下面)
int x = '0' + 1 - '5'
48 + 1 - 53 = -4
int y = '5' - 0 + '1'
53 - 0 + 49 = 102
int y = '5' - '0' + '1'
53 - 48 + 49 = 54
Run Code Online (Sandbox Code Playgroud)
注意它是一致的,每个int保持int并且每个char转换为ASCII代码
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |