可以为char指定整数值,但不能将整数变量赋给char

时间:2014-10-19 01:57:12

标签: java char int

为什么以下代码没有编译

int n = 5;
char c = n;

但以下编译

char c = 5;

Aren我只是在两种情况下都给char赋一个整数值?

2 个答案:

答案 0 :(得分:10)

char可以在没有演员的情况下分配给int,因为这是一个扩大的转换。要反过来说,intchar需要投射,因为它是一个缩小的转化。

另见JLS. Chapter 5. Conversions and Promotions

答案 1 :(得分:5)

他的问题是为什么他的代码不能编译,而不是如何做他正在尝试做的事情。

的原因

char c = n

不编译,是因为char(-2 ^ 15到2 ^ 15 - 1)的范围远小于int(-2 ^ 31到2 ^ 31 - 1)的范围。编译器看到你正在尝试将一个int分配给一个char,并阻止你,因为它实现了这一点。