== equals()问题

来源:互联网 发布:淘宝买家皇冠号多少钱 编辑:程序博客网 时间:2024/05/17 20:29



解释:

s1和s2都不是通过new关键字创建的字符串,所以这两个引用指向的字符串都不是堆中的,而是在常量池中的“aaa”,编译器优化后,它们是指向同一个在常量池中的“aaa”.
s3是通过控制台读取的输入,next()方法返回一个String,这个String应该是在堆中根据输入的字符串创建的。因此s1和s2的引用是相同的,s3的引用指向的是堆根据输入新创建的字符串,和s1,s2指向的常量池中的肯定不同。String类重写了equals()方法,比较的是字符串中每个字符是否相同,s1和s3每个字符都相同,因此返回true