这个是运算符的优先级和基本数据类型在参加运算时的类型转换以及“+”符号含义的问题。首先在一个表达式中,如果各个符号的优先级是同级的,那么会从左向右运算。基本数据类型在参加运算时的转换是:容量小的类型默认转换为容量大的数据类型,byte,short,char->int->long->float->double。当表达式中用“+”连接基本数据类型和字符串时,此时的“+”不能算是算术运算的加号,而看成字符串连接符,基本数据类型就会转换成字符串来进行连接。正如楼主的代码:String s="four:"+2+2;因为都是"+"号,运算符的同级的,就会从左向右运算。首先“four:” + 2得"four:2",再将"four:2"+2就得"four:22"。这样结果就出来了。 |