所以我理解你可以在大多数情况下对char进行隐式转换,反之亦然,只需要在int值大于FFFF的值时显式转换,但仍有某些地方我可以使用。混淆,关于什么时候你必须明确地将一个int强制转换为一个char,以及什么时候可以进行隐式转换。
例如, 下面的代码块给出了编译时错误"类型不匹配:无法从int转换为char"。
public static void main (String[] args)
{
char[] c = {'a','b'};
for (int i=0;i<c.length;i++)
{
c[i] = c[i] + 2;
System.out.println(c[i]);
}
}
修复它的唯一方法是将其显式地转换为char:
c[i] = (char) (c[i] + 2);
但是,这个其他策略虽然在逻辑上是等效的,但是没有给出编译时错误,为什么会这样?
c[i] +=2;
我遇到的另一个令人困惑的情况是,当你初始化一个整数并将char等效设置为该整数值时,你必须明确地转换它。
int x = 5;
char c = (char) x;
然而,当然,以下隐式转换可以正常工作。
char c = 5;
有人可以向我解释为什么会出现这些错误和非错误,以及其他一般情况是否需要从int到char的显式转换,为什么?