为何Java中int转String的代码无报错且输出为55?
为啥
int和String拼接能正常运行? 先澄清下:你贴的代码实际运行输出应该是5,不是55,大概率是输出示例写错了。
你提到的“不能直接把int转成String”是对的——比如String str = (String)5;这种强制转换肯定报错,因为int是基本类型,和String没有继承关系,没法直接强转。但你写的str = str + i;属于另一种情况,这是Java编译器提供的语法糖:
当+运算符两边有一个是String类型时,Java会自动把另一边的基本类型(这里是int)转换成字符串,再完成拼接。具体编译器会把这段代码翻译成类似下面的逻辑:
str = new StringBuilder().append(str).append(i).toString();
这里的append(i)会自动调用String.valueOf(i)把int值转成对应的字符串,再拼接到空字符串后面,最终得到"5"。
说白了,这不是直接的类型转换,是Java帮你在底层做了自动转字符串+拼接的处理,所以不会报错,还能得到正确的字符串结果。
内容的提问来源于stack exchange,提问作者Karan Suthar
相关产品推荐
相关产品推荐

