System.out.print("H"+"a");
System.out.print('H'+'a');
这两个程序输出的都是“Ha”吗?
不是第一个是“Ha”,第二个是"169"
因为第二个‘H’和‘a’都不是string,所以“+”执行的是加法而不是字符串连接。
如果也要活得“Ha”可以1.预置一个空字符串2.使用Stirng.valueof()3.使用StringBuffer
String letters = "ABC";
char[] numbers = {'1', '2', '3'};
System.out.println(letters + " easy as " + numbers);
这个得到的也不是“letters easy as 123”
虽然System.out.println(numbers) 会得到123
虽然String.valueof(numbers)会得到123
但是numbers.toString却不是。
或许Char[]类型可能应该复写toString()
<span style="white-space:pre"> </span>final String pig = "length: 10";
final String dog = "length: " + pig.length();
System.out. println("Animals are equal: "+ pig == dog);
System.out.println("Animals are equal: "+ (pig == dog));
System.out.println("Animals are equal: "+pig.equals(dog));
看这三个System.out.println()语句分别会获得什么结果。
第一个“false”.因为"+"的优先级要大于“==”,所以实际判定的是“Animals are equal length: 10”=="length: 10"
第二个“Animals are equal :false”因为==判断的是左右两边的对象引用是否引用到了相同的对象上。
如果pig和dog都是字符串常量的话,那么他们是同一个引用,但是不是。
第三个:"Animals are equal: true"。equals()方法是比较对象引用时应该用的方法,除非你比较的不是对象的值而是
队形的标识。