据说在println()方法中,能够将整型等数字,以字符串形式输出,故作了如下实验
public class StringTest{
  public static void main(String[] args){
  String str = "This is a string.";
  String ss;
  int a = 2;
  int b = 0;
  ss ="a" + "b";
  System.out.println(ss); 
  System.out.println(str + a + b);
  System.out.println(a + b + str);
    }
}
输出结果:
ab                               
This is a string.20 
2This is a string.
                   
问1.为什么ss能输出ab?
问2.为什么在两个输出语句中第一个可以正常以字符串输出,而
第二个输出却把0丢掉了?在JDK5.0的文档中,println()并没有这种使用的方法,不解高人指点!

解决方案 »

  1.   

    ss当然输出ab了,字符串连接。
    str+a转为字符串连接,而a+b+str先进行算术运算得到2再和str连接
      

  2.   

    +是操作符重载
    如果是数字之间用+是做加法运算
    如果是字符串相加是做字符的连接
    如果数字和字符相加是把数字转乘串连接
    a + b + str
    是先运算加法,然后字符串连接
      

  3.   

    与println方法没多在关系, 是+号的运算法则决定的.多个变量相加, 顺序是从左至右, 而+号一旦遇到一个String, 就会把后面所有的primitive当做String来相加.所以 str + a + b 相当于 str + new String(a) + new String(b)
    而 a + b + str, 由于a + b的时候还没有遇到String所以是正常相加, 相当于new String(a + b) + str
      

  4.   

    第二个(a + b + str);因为还没遇到String,所以第一个加号是正常的加号,并没有被重载,而第二个加号由于str是字符串,所以被重载了!
      

  5.   

    ss ="a" + "b";//将两个字符串a、b 进行了连接并将结果赋给了字符串ss,故ss的结果为abstr+a+b //运算顺序自左至右,String+int=String 将int转换成String类型再进行的运算, str + a(已转换为String类型)的结果为String类型,而后该结果字符串又与转换成String类型的b进行了连接
    1. "S" + a = "S" + "a" = "Sa"
    2. "S" + b = "S" + "b" = "Sb"a+b+str//运算顺序自左至右,1.int+int = int  2.int + String = String
    1. 2+0=2
    2. 2+"S"="2" + "S" = "2S"
      

  6.   

    println(str + a + b);
    会自动调用toString()这个函数,统一转换成字符串格式  int a = 2;
      int b = 0;
      ss ="a" + "b";你的ss中的“a”“b”和定义的int中的“a”“b”是不一样的。
    ss中的“a”“b”是字符串,而int中的“a”“b”只是变量
      

  7.   

    ss属于字符串连接。
    str+a转为字符串连接,而a+b+str先算术运算得到2再和str连接
      

  8.   

    ss是字符串连接str + a + b则是先将a转为字符串与str连接形成新的字符串再与b转成的字符串连接a + b + str 则是a与b先做算术运算,然后转成字符串后再与str做字符串连接
      

  9.   

    要想把数字现转换成字符串,不是把变量加上引号,可以用toString()方法,这样都是字符串操作,就不会丢掉任何字符
      

  10.   

    (1)ss ="a" + "b";ss的结果为ab,这个是字符串得相加,所以为AB(2)str+a+b 
    运算顺序自左至右,String+int=String 将int转换成String类型再进行的运算, str + a(已转换为String类型)的结果为String类型,而后该结果字符串又与转换成String类型的b进行了连接
    a + b + str 则是a与b先做算术运算,然后转成字符串后再与str做字符串连接
      

  11.   

    public static void main(String[] args){
            String str = "This is a string.";
            String ss="";
            String kk="";
            int a = 2;
            int b = 0;
            ss =ss+a + b;
            System.out.println(ss); 
            System.out.println(str + a + b);
            System.out.println(a+kk+b + str);
              }
    改成这样就好了
      

  12.   

    JAVA的设计者重载了+用来处理字符串的连接运算,但却没有给程序员重载运算符的权利
      

  13.   

    +号的魔力:)字符“a”+“b” = ab数字 2+0=2