我可以隐式地将int转换为long,并将long转换为Long。为什么无法将int隐式转换为Long?为什么Java不能在示例的最后一行进行隐式转换?
int i = 10; //OK
long primitiveLong = i; //OK
Long boxedLong = primitiveLong; //OK
boxedLong = i; //Type mismatch: cannot convert from int to Long
Long
和Integer
是对象。装箱/拆箱仅适用于原语。做Long boxedLong = i
的就像Long boxedLong = new Integer(10)
,那不是不!另外,请记住,之间没有继承Long
,Integer
所以甚至Integer i = new Long()
无效
所以,问题是--为什么在I=L的情况下,当L的大小足够小到适合I时,必须显式地进行,但在F=L的情况下,当L的大小也适合F时,铸造可以隐式地进行,而不会产生错误。 我的意思是,在这两种情况下,右操作数的大小可能不适合左操作数。那么,为什么在一种情况下(I=L),强制转换必须显式进行,而在另一种情况下(F=L)可以隐式进行呢?虽然隐式地将长var转换为int var比隐式地将长var转换为浮点var
问题内容: 我正在使用eclipse java ee执行Java编程。 我的其中一个功能中包含以下代码行: 我收到以下错误: 类型不匹配:无法从int转换为Long 我不太明白为什么当我在变量中添加数字时会出现此错误。 该问题如何解决?为什么首先发生? 问题答案: 对象之间没有转换,因此您需要从中进行转换。加a 使整数成为(): 但是,从进行了转换,因此可以使用: 因此,您也可以这样编写: 从一个
我正在解决一个问题,其中的任务是在用户提到的给定行输出pascal三角形的结果。 https://leetcode.com/problems/pascals-triangle-ii/ 我写了我的解决方案,其中有存储巨大阶乘结果的问题。 通过这些问题, 整数类型可以在C中存储哪些范围的值 长到无符号的字节数是多少? 并通过其他一些来源,我进行了以下更改,这给了我所需的结果。 由于“C”是int类型,
问题内容: 我有以下几行代码 我认为第3行和第4行执行相同的任务,然后为什么编译器在第4行显示错误“类型不匹配:无法从long转换为int” 请帮忙。 问题答案: 这是因为复合赋值运算符会进行隐式转换。 从JLS复合分配运算符: 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 对于二进制运算符,则必须显式进行强制转换。进行第四项作业: 它会工作。这就是您的复合赋值表达
问题内容: 您可以将int隐式转换为double: 您可以将int显式转换为double: 您可以将double显式转换为int: 为什么不能将一个double隐式转换为int? : 问题答案: 的范围比宽。这就是为什么您需要显式强制转换。由于相同的原因,您不能隐式地从转换为: