“==”和equals()的区别

一、“==”是一个比较运算符,可以比较基本数据类型,也可以比较引用数据类型;

(1)“==”比较基本数据类型是比较其的内容(值)是否相等;

(2)“==”比较引用数据类型是比较其地址值是否相等;

二、equals()是Object类中的一个方法,Object类中的equals()默认比较地址值是否相等;但是大多数类都对equals()进行了重写;比如String类对其进行重写,是其比较内容(值)是否相等;

public class Demo {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2);//s1和s2在存在于堆内存里,所以俩个地址值不相同,即false
        System.out.println(s1.equals(s2));//String类中重写了equals(),比较字符串内容,即true
        String s3 = new String("hello");
        String s4 = "hello";
        System.out.println(s3 == s4);//s3存在于堆内存,但s4在方法区的常量池中,所以地址值不相同,即false
        System.out.println(s3.equals(s4));//String类中重写了equals(),比较字符串内容,即true
        String s5 = "hello";
        String s6 = "hello";
        System.out.println(s5 == s6);//s5存在于常量池,当创建s6时会发现常量池内存在“hello”,
所以s6覆盖了s5,或者说是s6直接引用了s5的内容(值),所以地址值相同,即true
        System.out.println(s5.equals(s6));//String类中重写了equals(),比较字符串内容,即true
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值