您的数组包含 byte 原语,但您正试图在它们上调用方法。
您不需要做任何明确的事情来将byte 转换为int,只需:
int i=rno[0];
...因为它不是一个沮丧的人。
请注意,byte-to-int 转换的默认行为是保留值的符号(请记住,byte 在 Java 中是有符号类型)。比如:
byte b1 = -100;
int i1 = b1;
System.out.println(i1); // -100
如果您认为 byte 是无符号 (156) 而不是有符号 (-100),那么从 Java 8 开始就有 Byte.toUnsignedInt:
byte b2 = -100; // Or `= (byte)156;`
int = Byte.toUnsignedInt(b2);
System.out.println(i2); // 156
在 Java 8 之前,要获得 int 中的等效值,您需要屏蔽符号位:
byte b2 = -100; // Or `= (byte)156;`
int i2 = (b2 & 0xFF);
System.out.println(i2); // 156
仅出于完整性考虑 #1:如果您确实出于某种原因想要使用Byte 的各种方法(您不需要在这里),您可以使用boxing conversion:
Byte b = rno[0]; // Boxing conversion converts `byte` to `Byte`
int i = b.intValue();
或者Byte constructor:
Byte b = new Byte(rno[0]);
int i = b.intValue();
但同样,你在这里不需要那个。
仅出于完整性考虑 #2:如果 是向下转换(例如,如果您试图将 int 转换为 byte),那么您只需要转换: p>
int i;
byte b;
i = 5;
b = (byte)i;
这向编译器保证您知道这是一个向下转换,因此您不会收到“可能丢失精度”错误。