1、java判断字符串,要使用equals,但是,对于null,equal就不可用?
答:
字符串""与空对象NULL不同,它代表了一个空字符串也是一个对象,所以null并不等于"";
String s="a";
boolean b=(s.equals("a"));
则得到的b为true,而==则是比较左右两边的对象是否指向内存的同一位置,事实上可以认为是比较HashCode(哈希码)是否相等。
如:
String a="john";
String b=a;
则"a==b",但如果:
String a="john";
boolean b=(a=="john");
则b为false!因为a虽然是"john",但在第二句中的"john"字符串是一个新创建的匿名String类对象!显然新建的对象与原来的对象在内存中的地址并不相同.
HashCode能证明这个问题.