我认为的:
第一个println从左到右执行,首先执行加法,然后遇到字符型,进行字符连接
第二个println首先就遇到也字符,所以进行字符连接。

解决方案 »

  1.   

    编译器会先算出a+b,得出int型临时变量7,当遇到字串"7"时,会将int型变量7转化为字串"7",与后一个"7"叠加成为字串"77".
    在后一句中,编译器先遇到"7",会自动将后面的a,b转化为字串"3","4",所以结果为"734"
    这和程序的自动类型转换有关
      

  2.   

    没研究过java的语言和vm规范,可能是pprinln方法处理表达式采取自左到右的顺序。对于System.out.println(a+b+"7"),先算出a+b的值。对于System.out.println("7"+a+b),先处理字符串"7",这样导致后续的a和b均按字符串处理。
    java语言中,String变量与数值型变量相加可将数值型变量强制转换成String变量。这样提供了一种将数值型变量换成String变量的方便方法。
    如:
     int nCount = 100;
     String sCount = ""+nCount;
    转回去就麻烦一些
    如:
     String sCount = "1000";
     int nCount = Integer.parseInt(sCount);
    记不得在那本书上看到的,(好像是thinking in java),本人一般这样写代码。
      

  3.   

    涉及到数据类型转化的问题~!int和string之间是不能直接转换的所以会出现这种情况
      

  4.   

    当遇到第一个字符后,以后的操作都按照字符来处理。
    明白了这点就好解释了。
    看看thinking in java