【大白话说Java面试题】【Java基础篇】第31题:Java中==和equals有哪些区别
第31题Java中和equals有哪些区别回答核心区别是一个运算符equals是一个方法两者在比较对象时的行为有本质不同。1.的作用基本数据类型比较的是数值是否相等。引用数据类型比较的是对象的内存地址是否相等。代码示例以下代码展示了的行为inta5,b5;System.out.println(ab);// true基本数据类型比较值Strings1newString(hello);Strings2newString(hello);System.out.println(s1s2);// false引用数据类型比较地址2.equals的作用未重写equals方法默认行为与相同比较的是对象的内存地址。重写equals方法通常用于比较两个对象的内容是否相等。例如String类重写了equals方法比较的是字符串内容。代码示例以下代码展示了equals的行为Strings1newString(hello);Strings2newString(hello);System.out.println(s1.equals(s2));// true比较字符串内容Objectobj1newObject();Objectobj2newObject();System.out.println(obj1.equals(obj2));// false默认比较地址3. 对比总结特性equals基本数据类型比较数值不适用引用数据类型比较内存地址默认比较地址可重写为比较内容使用场景判断两个对象是否是同一个实例判断两个对象的内容是否相等面试官视角面试官可能会问“为什么String类要重写equals方法”答为了比较字符串内容是否相等而不是比较内存地址。面试官可能会追问“如何正确重写equals方法”答需要基于对象的关键属性实现一致性逻辑同时也要重写hashCode方法以保证集合类的正确性。专栏大白话说Java面试题 — 01-Java基础篇