class example{
  public static void main(String door[]){
int var1=10;
int var2=20;
System.out.println(var1+var2+++""+var2);}
}
结果是3021
但我理解应该是1020 21因为println不是把里面的整数转换为自负串了吗?var1+var2又没括号
头大了~~~~~~~~~请指点一下~~

解决方案 »

  1.   

    应该回去多看看书.
    System.out.println(var1+var2+++""+var2);
    两个int写在前面,当然是先加了.而++是后置运算符,所以前面加后是30,然后var2++是21,而后面30+""变成字符串,再加var2后还是字符串.
      

  2.   

    两个int写在前,之后的都成了运算,然后在转为字串,输出的3021是运算结果的字符串
      

  3.   

    var1+var2+++""+var2预算顺序:((var1+var2)++)+""+var2
      

  4.   

    var1+var2+++""+var2
    first -->var1+var2 -->30
    second -->var2++ -->21
    third -->30+"" --> "30"
    final --> "30"+"21" --> "3021"
      

  5.   

    ""后面的变量才会自动调用toString()方法的
      

  6.   

    究竟是先var1+var2 ,还是先var2++ ????
      

  7.   

    究竟是先var1+var2 ,还是先var2++ ????
    -------------------------------------
    System.out.println(var2++);
    System.out.println(var2);
    调用这两句看看你就知道了从语言使用上来说,先使用var2的值,然后var2自身加1
    从编译器的角度上来说,先把var2的值压栈,然后var2自加1,然后原来的值退栈继续进行相关的操作
    很简单的例子
    int i = 0;
    i = i++;
    你说这个结果是什么?
      

  8.   

    System.out.println(var1+var2+++""+var2);}下面这样理解吧
    (10+((20)++))+""+21
                 =3021
      

  9.   

    var1+var2+++""+var2预算顺序:(var1+(var2++))+""+var2这里有两个问题:其一: ++ 运算
    当++ 在前就是先自加运算后取值. 例如 a=1,b=2, a+++b结果是4,a是1,b是3
    当++ 在后就是先取值后自加运算.  例如 a=1,b=2, a+b++结果是3,a是1,b是3
    因为++ 的运算优先级 比 + 高.其二:运算符(+) 比 字符连接符(+) 优先级高我想现在应该很清楚为什么这样子了.我们要对基本的知识有一个清楚的了解!
      

  10.   

    int加了的时候,可以做数字加!
    当“+”的时候碰到字符串后,就会把int的后面当字符串处理
    哈哈,这不是位运算!我上了楼住的当了!开个玩笑!