由于我的数字很小(0到13之间),我已经决定使用 byte 而不是 int 可以带来微小的性能提升。但是,我收到以下编译错误:
错误:(87,31)错误:不兼容的类型:从int到byte的可能有损转换
这是Card类构造函数的基本部分,它似乎恰到好处,需要两个参数的字节:
这很奇怪,我想听听你的理由是什么,我错过了什么?
答案 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)的定义。无法找到,因此编译失败。