String String s1 = "aaa";
String s2 = "aaa";(String s3 = new String("aaa"); 创建的 s3 和 s2 的用处是一样的)
s1 和 s2 是两个String类型的引用
1、调用 s1 == s2 时,它要返回的是一个 boolean 的值,判断的依据是 s1 和 s2 在内存中的地址,不同的变量在内存中的地址肯定是不同的,所以理所当然的返回一个 false。
2、然后调用 s1.equals(s2) 时,就利用到了重载的技术,我们知道 equals() 是 Object 中的成员函数,但是所有的类都是 Object 的子类,String 也不例外,但是 String 类型在继承 Object 类时还重载了 equals() 方法,使在比较时不再比较内存地址,而是比较自己维护的一连串字符, s1 和 s2 维护的一串字符都是“aaa”,所以此方法的返回值是 true。
希望能帮助到你~~ |