类型不匹配:无法从int转换为char

时间:2016-07-03 19:30:24

标签: java casting char int

所以我理解你可以在大多数情况下对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的显式转换,为什么?

0 个答案:

没有答案