“==”和“equals”的理解:
1.object1 == object2
“==”比较两个对象的内存地址(是否为同一对象),如果是返回true,否则返回false。
2. object1.equals(object2)
“equals”比较,首先看是否重写了equals()方法,如果没重写(等效“==”),要返回true则两引用必须指向同一对象,否则为false。而String,Date,包装类(Integer,Double等)等重写了Object的equals()方法,这时如果两引用所引用的对象是同一类对象(并不一定是同一对象,可使用instanceof检验)且属性内容相等时返回true,否则返回false。
3. 内存分为四个部分:heap(堆)\stack(栈)\code segment\data segmet\
其中:堆中存放的是NEW 出来的对象;而栈中存放的是局部变量;而静态变量和字符串常量放在data segment中;剩下的就是代码了,存放在code segment中。理解内存的管理更能方便判断!
4. 比较基本数据类型,“==”和“equals”就都是比较值了!
面试中经常遇到,必须理解深刻!