为什么字符串转换不是数字升级的类型?

问题描述 投票:0回答:1

Oracle指定有关数字促销的信息>

数值提升(第5.6节)将数值运算符的操作数带到通用类型,以便可以执行操作。

如果一个操作数的类型为double,则另一个将转换为double。

否则,如果其中一个操作数的类型为float,则另一个被转换为float。

否则,如果一个操作数的类型为long,则另一个将转换为long。

否则,两个操作数都将转换为int类型。

Oracle指定有关的String转换

如果只有一个操作数表达式的类型为String,则对另一个操作数执行字符串转换(第5.1.11节),以在运行时生成字符串。字符串转换(第5.4节)仅适用于二进制+运算符的操作数,而另一个操作数是字符串时,该操作数不是字符串。

我的问题是,为什么数字转换中不包含字符串转换?如果考虑此代码System.out.println("HELLO"+90+90.0F);,则输出将为“ HELLO9090.0F”(当然不带引号)。我完全理解这是如何工作的。由于“ HELLO”是字符串,因此当存在“ +”运算符时,相应的操作数90也将转换为字符串。发生串联,从而得到“ HELLO90”。现在,存在“ +”运算符时,相应的操作数也将转换为字符串。进行级联,给出“ HELLO9090.0F”。我的意思是为什么数字转换的第一优先级

中不包含字符串转换?如果您认为只有主加法运算符存在,主字符串之后的所有操作数都将转换为字符串,这才有意义。它应该在数字促销本身的first priority中提供。

Oracle关于数值提升的规定是,数值提升(第5.6节)将数值运算符的操作数带到一个通用类型,以便可以执行运算。如果任何一个操作数都属于...

java string string-conversion type-promotion
1个回答
2
投票

字符串连接,

© www.soinside.com 2019 - 2024. All rights reserved.