首先定义一个String类型的result
这里我想用循环,实现result的拼接,采用的是每次循环对result+=所需拼接的字符,如果是单纯对字符的拼接,会导致以下的输出:
原因是用+=拼接之后,表达式的右边就全是char类型的变量在进行相加,这时候编译器就把这些char当成ASCII码之间的数字运算,所以得到下面的结果
我这里有两种解决方案(思路就是让char类型的变量+“”(哪怕是个空的String)让其升级为String,这里可以参考int+double->double类型):
不过对字符串拼接时可以采用StringBuilder.append()和StringJoiner.add(),这样更省空间,效率更高
String的拼接是每次都在堆内存中new一个新的String出来,浪费内存而且速度慢
①将表达式右边的任意一个字符转化为String类型,这里用到了String类里面的Valueof方法,如下图
这样就告诉编译器,表达式右边不光是char还有String,所以向上升级,char也当成String进行拼接操作
②将 result+=xxx 改为 result=result+xxx
这样表达式右边就有了result这一个String类型的变量,所以右边全部数据类型向String类型升级
得到预期结果:
总结:
虽然我们来看,result+=xxx和result=result+xx,好像是一样的,但是还是要在表达式右边准确的告诉编译器,我要得到的是String而不是ASCII码的相加