网站优化策略,徐州泉山建设局网站,功能型网站建设,手机海报制作app在 Java 中#xff0c; 和 equals 有着不同的作用#xff1a; 运算符#xff1a; 在基本数据类型#xff08;如 int、char 等#xff09;中#xff0c; 用于比较它们的值是否相等。 在引用类型中#xff0c; 和 equals 有着不同的作用 运算符 在基本数据类型如 int、char 等中 用于比较它们的值是否相等。 在引用类型中 比较的是对象引用即内存地址是否相同即是否指向同一块内存。 equals 方法 equals 是一个方法用于比较对象的内容是否相等它是 Object 类的方法可以被子类覆盖重写。 默认情况下Object 类中的 equals 方法是使用 比较两个对象的引用因此如果没有在类中重写 equals 方法那么使用 equals 和 会有相同的行为。
在源码中 实际上是在比较对象的引用即比较两个对象的内存地址是否相同。这在 Java 虚拟机中通过比较对象的引用地址来实现。这是因为 操作符比较的是两个对象的引用如果两个对象的引用指向的是同一个内存地址则返回 true。
对于 equals 方法它是一个可以被覆盖重写的方法。在 Object 类中的默认实现是直接使用 操作符来比较两个对象的引用地址。但是许多类如 String、Integer 等会覆盖 equals 方法以实现内容比较而非引用比较。因此equals 方法的实现可以根据类的需求而有所不同。 比较对象的引用而 equals 方法用于比较对象的内容但前提是需要根据需要在类中重写 equals 方法。
当涉及到Java中的和equals时以下是五种情况的示例它们展示了这两者之间的不同
1. 字符串比较
String str1 new String(hello);
String str2 new String(hello);
boolean usingEquals str1.equals(str2); // 结果为true因为equals方法比较字符串的内容
boolean usingDoubleEquals str1 str2; // 结果为false因为这里比较的是对象的引用地址在这个例子中尽管对象的内容相同但由于它们是两个不同的对象所以使用比较时将会返回false。
2. 自定义类的比较
class Point {int x, y;public Point(int x, int y) {this.x x;this.y y;}
}Point p1 new Point(2, 3);
Point p2 new Point(2, 3);
boolean usingEquals p1.equals(p2); // 结果为false因为Point类中没有重写equals方法所以比较的是引用地址
boolean usingDoubleEquals p1 p2; // 结果为false同样是比较的引用地址在这个例子中即使这两个Point对象的属性值是相同的但由于没有重写equals方法因此和equals都会比较对象的引用地址从而导致返回false。
3. 包装类的比较
Integer num1 10;
Integer num2 10;
boolean usingEquals num1.equals(num2); // 结果为true因为Integer类重写了equals方法比较的是内容
boolean usingDoubleEquals num1 num2; // 结果为true因为Java缓存了-128到127之间的整数对象所以它们的引用地址相同这里的例子展示了使用和equals比较两个Integer对象的差异。由于Java对整数对象进行了缓存因此在-128到127之间的整数对象使用会返回true。
4. 数组比较
int[] arr1 {1, 2, 3};
int[] arr2 {1, 2, 3};
boolean usingEquals Arrays.equals(arr1, arr2); // 结果为true因为Arrays.equals方法比较的是数组的内容
boolean usingDoubleEquals arr1 arr2; // 结果为false因为数组是不同的对象在这个例子中使用比较两个数组将会返回false因为数组是不同的对象。而使用Arrays.equals方法则会比较数组的内容如果内容相同则返回true。
5. 枚举类型的比较
enum Weekday { MONDAY, TUESDAY, WEDNESDAY }
Weekday day1 Weekday.MONDAY;
Weekday day2 Weekday.MONDAY;
boolean usingEquals day1.equals(day2); // 结果为true因为枚举类型已经重写了equals方法
boolean usingDoubleEquals day1 day2; // 结果为true因为枚举类型的对象是唯一的在这个例子中枚举类型的对象是唯一的因此无论使用还是equals都会返回true。
总结
在Java中“”比较的是对象的引用地址而“equals”方法用于比较对象的内容。重写“equals”方法允许自定义类根据需要执行内容比较。如果不重写那么两者没有区别因为equals底层还是用的。对于基本数据类型“”比较它们的值是否相等。同时“”在比较包装类对象时会受到Java整数缓存的影响。 文章转载自: http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.lwcgh.cn.gov.cn.lwcgh.cn http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.ylqb8.cn.gov.cn.ylqb8.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.nmfxs.cn.gov.cn.nmfxs.cn http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.stcds.cn.gov.cn.stcds.cn http://www.morning.rbyz.cn.gov.cn.rbyz.cn http://www.morning.jhzct.cn.gov.cn.jhzct.cn http://www.morning.nzms.cn.gov.cn.nzms.cn http://www.morning.sdecsd.cn.gov.cn.sdecsd.cn http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn http://www.morning.fhhry.cn.gov.cn.fhhry.cn http://www.morning.mnygn.cn.gov.cn.mnygn.cn http://www.morning.smnxr.cn.gov.cn.smnxr.cn http://www.morning.gnghp.cn.gov.cn.gnghp.cn http://www.morning.xqndf.cn.gov.cn.xqndf.cn http://www.morning.rjyd.cn.gov.cn.rjyd.cn http://www.morning.qnywy.cn.gov.cn.qnywy.cn http://www.morning.ygbq.cn.gov.cn.ygbq.cn http://www.morning.fpxms.cn.gov.cn.fpxms.cn http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.bsxws.cn.gov.cn.bsxws.cn http://www.morning.mbprq.cn.gov.cn.mbprq.cn http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.frsbf.cn.gov.cn.frsbf.cn http://www.morning.xpfwr.cn.gov.cn.xpfwr.cn http://www.morning.sjwiki.com.gov.cn.sjwiki.com http://www.morning.wyzby.cn.gov.cn.wyzby.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn http://www.morning.dpplr.cn.gov.cn.dpplr.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.hflrz.cn.gov.cn.hflrz.cn http://www.morning.lpskm.cn.gov.cn.lpskm.cn http://www.morning.pmwhj.cn.gov.cn.pmwhj.cn http://www.morning.gpcy.cn.gov.cn.gpcy.cn http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.gsyns.cn.gov.cn.gsyns.cn http://www.morning.qgghr.cn.gov.cn.qgghr.cn http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.ysrtj.cn.gov.cn.ysrtj.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.qprtm.cn.gov.cn.qprtm.cn http://www.morning.qlhkx.cn.gov.cn.qlhkx.cn http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.hwtb.cn.gov.cn.hwtb.cn http://www.morning.clpfd.cn.gov.cn.clpfd.cn http://www.morning.mhcft.cn.gov.cn.mhcft.cn http://www.morning.xgchm.cn.gov.cn.xgchm.cn http://www.morning.crtgd.cn.gov.cn.crtgd.cn http://www.morning.gjmll.cn.gov.cn.gjmll.cn http://www.morning.wdprz.cn.gov.cn.wdprz.cn http://www.morning.bxrlt.cn.gov.cn.bxrlt.cn http://www.morning.syxmx.cn.gov.cn.syxmx.cn http://www.morning.fgppj.cn.gov.cn.fgppj.cn http://www.morning.lzttq.cn.gov.cn.lzttq.cn http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn http://www.morning.fydsr.cn.gov.cn.fydsr.cn http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.kwqt.cn.gov.cn.kwqt.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.cwknc.cn.gov.cn.cwknc.cn