"+"在java中是一个很特殊的操作符。
它对于String有特殊作用,当“+”用于String时,这个操作符会将前后两个串串连起来,返回一个新串,
如:
String s = "a" + "b";这个操作符只对String有意义,对其他类型没有意义,如果“+”的左操作数和右操作数都不是String,那么编译器是不会承认的,
如:
String s = new Integer(1) + new Object();如果“+”的左右操作数中有一个是String,就会进行拼字符串的操作,对于不是String的那个操作数,会先调用他的toString()方法,然后在做字符串相加;
如:
Object o = new Object();
String s = "str" + o;
实际上编译后,会变成:
String s = "str" + o.toString();
它对于String有特殊作用,当“+”用于String时,这个操作符会将前后两个串串连起来,返回一个新串,
如:
String s = "a" + "b";这个操作符只对String有意义,对其他类型没有意义,如果“+”的左操作数和右操作数都不是String,那么编译器是不会承认的,
如:
String s = new Integer(1) + new Object();如果“+”的左右操作数中有一个是String,就会进行拼字符串的操作,对于不是String的那个操作数,会先调用他的toString()方法,然后在做字符串相加;
如:
Object o = new Object();
String s = "str" + o;
实际上编译后,会变成:
String s = "str" + o.toString();
System.out.println(a > a);
System.out.println(a < a);三个都是false, 只有操作符被重载过了,才可能会出现这样的结果。对于这个,你不必锱铢必较。只要记住,java中不允许你对operator重载。但是在底层已经这样做了,而且他们对它们重载,必然有其道理,