黑马程序员技术交流社区
标题:
关于day12中,String类面试题的疑问,请解惑,谢谢
[打印本页]
作者:
SkyBlack
时间:
2016-5-27 10:52
标题:
关于day12中,String类面试题的疑问,请解惑,谢谢
在day12天中的12.8,疑惑如下
例1:
class Test_String {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
例2:
package com.heima.student;
class Test_Student {
public static void main(String[] args) {
Student s1 = new Student("张三",23);
Student s1 = new Student("张三",23);
System.out.println(s1.equals(s2));
}
}
为什么在例1中不用重写equals语句就可以对比两者属性呢?
而例2讲过的是equls语句底层就是运用的 == ,所以对比的也是地址值,要重写equals语言才能对比属性。
在这里有些困惑,能否解答一下。
而我的理解是:可能例2讲的是有一个对象的创建和方法的引用,所以将字符串加载进堆内,所以是将地址值进行比较,而这个程序直接用String创建的字符串对象,故而将字符串加载进常量池,所以直接比较的就是属性值。不知道是不是这么理解的,还请大神指导。谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2