一些理解
一、==和equals有什么区别?
以String来说,,==比较的是内存地址里的值,比如我们新建一个
`String a="abc";
String b="abc";
String c=b;
实际上是在栈内存中新建了一个引用a,这个a指向堆内存中的常量“abc”,新建了一个b,也是一个引用,因为堆内存中已经有了这个”abc“,所以b同样指向这个”abc“而不是创建新的。
如果我们用==区比较a,b 返回值一定是true,因为a和b指向同一个”abc“。equals这个方法一般会进行重写,不重写的话其实和 双= 是一样的,String里帮我们重写了这个方法。以下是源码:
可以看出,此时equals已经变成了比较两个字符串内容。如果两个字符串内容相同,返回true,否则返回false。