这个运算符可以说是在之后的编程中,运用最多的运算符了,根据印象来看的话,仅次于赋值运算符。

 

这个运算符也是重载运算符,重载了+运算符。在前面也提到了,Java中再布尔运算符和位运算中,实现了不少运算符的重载。但是由于这些位运算符使用频率极低,人们几乎都忘了Java还有这么一类运算符,以至于很多时候,会把字符串连接运算符认为是Java中唯一重载的运算符。

 

那么当Java源代码中出现了+运算符后,它到底是加法运算符还是字符串连接运算符?这里就是Java编译器运行判断的基本原则:

 

当“+”用在表达式中的时候,如果其中有一个操作数是字符串类型(String),则Java会自动将另一个操作数也转换成字符串,然后将这两个字符串相连起来生成一个新的字符串。

 

所以这里有一个小技巧,如果你想把一个非字符串类型的数据对象变成字符串类型,那么可以通过将数字和一个空字符串相连的方式,来方便的将数字转换成字符串类型。

 

比如: int i=5;
          String s = i+"";

 

这样就很容易的实现了字符串类型的转换了。这在Java编程中是一个很实用的技巧。

 

下面来看一个例子,来分析一下:

 

public class StringPlus {
 public static void main(String[] agrs) {
  double x = 9.987;
  double y = 1;// 自动将int型的数值1提升到double类型1.0
  double t = x + y;
  String s = "Price is: " + x; // 得到一个字符串:“Price is:9.987”
  String st = "Total Price is: " + t;
// 得到一个字符串:“Total Price is:10.987”
  System.out.println(s);
  System.out.println(st);
  System.out.println("" + x + y);// 打印出一个字符串:“9.9871.0”
  System.out.println(x + y + "");// 打印出一个字符串:“10.987”
 }
}

 

从上面的例子中,我们可以看到,String和一个数字类型的数据进行“+”运算,将会得到一个新的字符串,这个字符串由旧的字符串和这个数字组成。

再来看这行程序:
 System.out.println(""+x+y);

根据运算符从左到右的结合原则,空字符串“""”首先和x进行运算,得到一个字符串,这个字符串的内容就是“9.987”,然后,这个字符串再和数字y进行运算,此时得到一个由x和y组合成的新的字符串:9.9871.0。

比较一下下面这条语句:
  System.out.println(x+y+"");

这条语句首先进行数值的相加运算,得到一个新的数值:10.987,然后再和空字符串进行连接运算,此时得到一个新的字符串,内容为“10.987”。