Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 铸造和包装:一些奇怪的案例_Java_Casting_Wrapper - Fatal编程技术网

Java 铸造和包装:一些奇怪的案例

Java 铸造和包装:一些奇怪的案例,java,casting,wrapper,Java,Casting,Wrapper,看看这个。。。今天晚上,我正试图在包装纸上涂上一些底漆,这时我发现: Integer i = (Integer)4; Integer i = (Integer)4f; // Doesn't compile! 但如果我重写第二行: Integer i2 = (int)4f; // Then it compiles 有什么区别?为什么在第一种情况下我可以使用包装器类强制转换,而在第二种情况下不能使用包装器类强制转换 Integer i = (Integer)4f; 您正在将float原语强制

看看这个。。。今天晚上,我正试图在包装纸上涂上一些底漆,这时我发现:

Integer i = (Integer)4;
Integer i = (Integer)4f; // Doesn't compile!
但如果我重写第二行:

Integer i2 = (int)4f; // Then it compiles
有什么区别?为什么在第一种情况下我可以使用包装器类强制转换,而在第二种情况下不能使用包装器类强制转换

Integer i = (Integer)4f; 
您正在将float原语强制转换为整数包装器-它们不适合。这也与自动装箱无关。即使使用显式装箱,也无法编译:

Integer i = (Integer)(Double.valueOf(4f));
在这里:

Integer i2 = (int)4f;
将浮点原语强制转换为int原语(在此过程中截断),然后java自动将其转换为整数