带字符的整数算术

时间:2018-06-28 08:23:02

标签: java

我有一个简单的代码块,有人可以向我解释为什么这在Java中可以接受吗?

int a = 10;
int c = 'A' + (a -1);
System.out.println(c);

在编译器中显示的结果是: 74 。 那么,七十年代的价值到底从何而来? 感谢您的回答。

4 个答案:

答案 0 :(得分:5)

在Java中,char可以(显式或隐式)转换为int,然后使用与此字符关联的ASCII值。

您的情况是,七十年代来自字符'A'。该字符的ASCII值为65。因此,系统会隐式进行强制转换'A' → 65。您的计算会做到:

c = 'A' + (a-1)
 ↓
c = 65 + (10-1)
 ↓
c = 74

答案 1 :(得分:2)

ascii的{​​{1}}值为65。请检查此link以获取完整参考。通过使用其unicode值(隐式)将char数据类型扩展为int数据类型来进行转换,在这种情况下,'A'的值为65(jls 5.6.1)。

答案 2 :(得分:0)

Char被隐式转换为整数,结果“ A” = 65 所以65 + 9 = 74

答案 3 :(得分:0)

将一种数据类型的值分配给另一种数据类型时,这两种类型可能彼此不兼容。应该将其强制转换为正确的类型:

有2种类型:-

  • Wilding或自动类型转换。 按以下顺序进行投放:
  

byte-> short-> int-> long-> float-> double

     

char-> int

示例:

int i = 100; //i is 100
float f = i; // f is 100.0 
  • 缩小或显式 转换。按以下顺序投放:
  

double-> float-> long-> int-> short-> byte

示例:

double d = 100.100; //d is 100.100
int i = (int)d; //i is 100

因此,当在整数上下文中使用字符值时。它会自动转换为int。 就您而言:

int a = 10;
int c = 'A' + (a -1); //c = 65 + (10-1)

'A'ascii值为65,因此得到c = 74

希望这会有所帮助。