我正在学习包装类,在这里我学习了如何将int转换为Interger包装类。
但是我想使用Byte包装类将int转换为Byte。
我试过了
int a =10;
Byte c = Byte; //(Not getting suggestion in eclipse)例如,我知道如何将int转换为Interger,请参阅下面的代码。
int a =10;
Integer b = Integer.valueOf(a);发布于 2019-08-07 08:45:14
您可以向整数添加一个额外的强制转换,如下所示:
int a = 10;
Byte c = Byte.valueOf((byte)a);顺便说一句,从原语到盒式值是由编译器隐式完成的。所以上面的代码不需要.valueOf
int a = 10;
Byte c = (byte)a;但是,当您显式地转换值时,请始终记住,当错误时,它可能会带来意想不到的结果。例如,在本例中,一个字节的大小小于一个整数(字节的范围是[-128, 127],int的范围是[-2147483648, 2147483647]),所以这样的内容不会给出预期的结果:
int a = 200;
Byte c = Byte.valueOf((byte)a); // Results in -56这也是为什么您通常不能选择较小的类型,因为它可能不适合,但您可以选择更大的类型,而不需要演员阵容:
byte a = 10;
Integer c = Integer.valueOf(a);发布于 2019-08-07 08:45:11
您可以按照通常使用Integer包装器的方式进行转换。
int a =10;
Byte b = Byte.valueOf((byte)a);
//b = 10一个int是4个字节。因此,您不能在不丢失一些数据的情况下将整数转换为字节。
int a =1000;
Byte b = Byte.valueOf((byte)a);
//b = -24但是,可以将int转换为字节数组。
发布于 2019-08-07 08:47:16
你也可以为Byte做同样的事情:
Byte b = (byte) a;Byte b = Byte.valueOf((byte)a)返回表示指定字节值的Byte实例。如果不需要新的Byte实例,则通常应该优先使用此方法而不是构造函数byte (字节),因为由于所有字节值都是缓存的,此方法可能会产生更好的空间和时间性能。
因此,如果没有强制转换操作符,就无法执行JLS 5.0-2.不同语境下的转换。
// Casting conversion (5.4) of a float literal to
// type int. Without the cast operator, this would
// be a compile-time error, because this is a
// narrowing conversion (5.1.3):
int i = (int)12.5f;https://stackoverflow.com/questions/57390303
复制相似问题