使用'字节'时的编译错误(不兼容的类型)原始类型而不是' int'

时间:2017-10-21 21:34:41

标签: java android android-studio primitive-types

由于我的数字很小(0到13之间),我已经决定使用 byte 而不是 int 可以带来微小的性能提升。但是,我收到以下编译错误:

  

错误:(87,31)错误:不兼容的类型:从int到byte的可能有损转换

Compilation error

这是Card类构造函数的基本部分,它似乎恰到好处,需要两个参数的字节:

Card class constructor

这很奇怪,我想听听你的理由是什么,我错过了什么?

2 个答案:

答案 0 :(得分:3)

以这种方式作为文字提供的文字值的默认类型是int,将值转换为byte。像,

Card card = new Card((byte) 1, (byte) 12);

声明本地值以保存参数(Java编译器将允许这样做,因为它是声明),如

byte suit = 1;
byte rank = 12;
Card card = new Card(suit, rank);

答案 1 :(得分:1)

Elliott是正确的@Serj但不是限制。 JAVA允许方法重载(具有相同名称但在数量和类型上具有不同参数的方法),这非常有用。这意味着您可以使用另一种形式为Card的卡构造函数(int suit,int rank)。因为您指定了一个文字值,并且在这种情况下默认为整数,所以编译器会查找Card(int,int)的定义。无法找到,因此编译失败。