equals()与==的区别

Java中,基本数据类型比较的是值,而引用数据类型的比较是内存地址。equals()方法默认比较对象的引用,但可被覆盖来比较内容。例如,String类型覆盖了equals(),比较字符串内容。当两个String对象内容相同但非同一对象时,==返回false,equals()返回true。此外,42==42.0在Java中为true,因浮点数与整数比较时会进行类型转换。
摘要由CSDN通过智能技术生成
  • == :基本数据类型比较的是,引用数据类型(对象数组等)比较的是内存地址
  • equals():比较的是内容
  1. 没有覆盖equals()方法:比较两个对象时,等价于==,默认用Object类的equals()方法。源码如下:
public boolean equals(Object obj) {
    return (this == obj);
}

2.  类覆盖了equals()方法:用来比较对象中的属性是否相等。若相等,返回true。

String a = new String("ab");   // a 为一个引用
String b = new String("ab");  // b为另一个引用,对象的内容一样

/** String类型变量直接赋值的话,会保存在常量池中,若两个变量内容一样,
那么它们的引用也一样,防止多余空间开辟 */
String aa = "ab";   // 放在常量池中
String bb = "ab";  // 从常量池中查找

if (aa == bb) {    // true
    System.out.println("aa==bb");
}

if (a == b) {    // false,非同一对象
    System.out.println("a==b");
}

if (a.equals(b))  {   // true
    System.out.println("a等于b");
}

if (42 == 42.0) {   // true
    System.out.println("true");
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值