黑马程序员技术交流社区

标题: 输出和我想的不一样? [打印本页]

作者: 何洪森    时间: 2012-2-6 23:54
标题: 输出和我想的不一样?
本帖最后由 何森 于 2012-2-7 15:49 编辑

在网上面看的,输出结果大家考虑一下是什么?题目在下面
public class Demo{
  public static void main(String args[]){
    String str = new String("abc") ;
    str = 1+2+str+3+4 ;
    System.out.println(str) ;
  }
}
运行结果为什么是:3abc34呢?
作者: 秦碧    时间: 2012-2-6 23:58
1+2+str+3+4的顺序为:
1+2=3 这里的+为加法运算符
3+str="3abc"  这里及以下的+为字符串连接运算符
"3abc"+3="3abc3"
"3abc3"+4="3abc4"

作者: 陈时峰    时间: 2012-2-7 00:00
我是这样认为的, str = 1+2+str+3+4 ;按照运算的顺序先算1+2=3是int型
然后3+str也就是3+"abc"会把int型的3转换成String型的"3",结果为"3abc"
然后同样的道理"3abc"+3="3abc3"  最后"3abc3"+4="3abc34"

作者: 张建银    时间: 2012-2-7 00:03
1*(2+str)+3=  ?
作者: Joyuang    时间: 2012-2-7 00:07
1+2+str+3+4
执行顺序是,从左到右,首先1+2,得到3,然后+str,这时候str是个字符串,碰到字符串,int类型自动转换成String类型,然后+3然后+4,都是以字符串的形式相加的。
在运算中,一旦碰到了字符串,输出都是字符串。
作者: 老罗    时间: 2012-2-7 00:11
钱兆元 发表于 2012-2-7 00:07
1+2+str+3+4
执行顺序是,从左到右,首先1+2,得到3,然后+str,这时候str是个字符串,碰到字符串,int类型 ...

楼主可以改成已解决了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2