Java 的 String 类要受一种名为“运算符过载”的机制的制约。
也就是说,只有在随同 String 对象使用时,加号才会产生与其他任何地方不同的表现。对于字串,它的意思是“连接这两个字串”。
但事情到此并未结束。请观察下述语句:
System.out.println("Total Memory = "+ rt.totalMemory()+ " Free Memory = "+ rt.freeMemory());
其中,totalMemory() 和 freeMemory() 返回的是数值,并非String对象。如果将一个数值“加”到一个字串身上,会发生什么情况呢?
同我们一样,编译器也会意识到这个问题,并魔术般地调用一个方法,将那个数值(int,float 等等)转换成字串。
经这样处理后,它们当然能利用加号“加”到一起。这种“自动类型转换”亦划入“运算符过载”处理的范畴。