为什么返回一个字符串时一个整数本身不起作用,但是在它旁边添加一个字符串时它就起作用了?它会突然像(Integer.toString())一样转换整数吗?
public class Car {
String brand;
String model;
int hp;
@Override
public String toString() {
return hp; //this doesn't work because it wants to return int.
//return hp + brand; does work for some reason.
/*return Integer.toString(hp); could it be doing something like this behind
the scenes?*/
}}
2条答案
按热度按时间vfh0ocws1#
根据Java语言规范:
字符串上下文仅适用于binary +运算符的一个操作数,当另一个操作数是字符串时,该操作数不是字符串。
在这些上下文中,目标类型总是String,并且总是发生非String操作数的字符串转换(参见5.1.11节)。
这意味着,当您执行
hp + brand
时,由于brand
是String
,因此上述规则生效,hp
转换为String
,并发生连接,从而得到String
。lnvxswe22#
这是因为Java处理字符串的方式。当你试图"添加"任何东西到一个字符串,它会导致一个"concatenate"操作。这里有一篇很好的文章来解释它https://www.geeksforgeeks.org/addition-and-concatenation-using-plus-operator-in-java/
例如:
另外值得注意的是,表达式是从左到右计算的。