java中equals()和==的区别

java中equals()和==的区别

1. += 与 = + 之前的区别

+= -= *=… 不会改变数据类型

short n1 = 10;
n1 = n1 + 1;//编译出错
n1 += 1;//不会出错

2.equals使用小技巧

public static void isEqual(String str){
    String str1 = "测试";
    //str.equals(str1);
    //str1.equals(str);
    //两者之间存在差别
}

感觉上两个比较相同,但是,str是获取的,而str1是固定的,所以str.equals(str1)的时候会存在一个问题就是如果str为空就会出错,会有空指针异常。

3.对象之间用 == 和 equals() 的区别

对象是引用数据类型所以理想是 ==比较的是不是同一个对象,equals()比较的是值是不是相等。

举例:张三有一个女朋友叫小丽,李四也有一个女朋友叫小丽。==比较的是他们的女朋友是不是同一个人,equal()比较的是他们的女朋友是不是都叫小丽。
因为这是理想的状态,所以这个稍微有点片面,具体解释为:对象所有的父类都是Object,都继承了Object的equals方法,但是父类中的equals方法源码是这样写的:

   public boolean equals(Object obj) {
       return (this == obj);
   }

所以理论上equals方法和== 是一样的,但是为什么String等equals方法是比较的我们理想的(即不是比较地址,而是值),因为他重写了equals方法。所以这就是equals 和 == 的区别

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值