Java类型不匹配无法从int转换为byte?

时间:2018-08-22 19:29:45

标签: java casting type-conversion

我想知道为什么//1语句被编译器接受而//2语句不被

    //1
    int k = 99999999;
    byte l = (byte)k;

    //2
    byte b = 1;
    int i = 10;
    byte z = (byte)i+b; //compiler rejected 

Type mismatch: cannot convert from int to byte using ternary operator给了我一些想法,但是我不明白为什么编译器可以将l中的变量//1解析为可接受,而不解析{{ 1}}

2 个答案:

答案 0 :(得分:1)

您仅将第一个数字byte而不是全部和转换为i。您必须添加括号:

byte z = (byte) (i+b);

答案 1 :(得分:1)

Plus始终返回int。因此,您需要将整个表达式显式地转换为字节。

(byte)(i+b)
相关问题