java 解惑3 string 字符串

来源:互联网 发布:端口查询 编辑:程序博客网 时间:2024/05/16 14:19
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()方法是比较对象引用时应该用的方法,除非你比较的不是对象的值而是

队形的标识。



0 0
原创粉丝点击