==与equals的区别

(1)==是一个运算符,用于比较两个值是否相等

==用于基本数据类型的变量时,比较的是存储的两个变量值是否相等

==用于引用类型的变量时,比较的是引用的地址是否相同,即变量所指向的对象的地址是否相等。

(2)equals()是Object类的方法,Object类是所有类的父类。

而基本数据类型不属于类,因此基本数据类型不能使用equals()方法。

当equals没有重写的时候,它的作用与==是相同的,都是比较引用的地址是否相同。不过Java中大部分的类都重写了equals方法,重写之后的equals方法则是用于比较两个对象的值是否相等

 String str =new String("Hello");// str存在于堆区
        String str1 = "Hello"; //str1的引用存在于栈区,其值存在于常量池
        String str2 = "Helloworld";
        String str3 ="world";
        String str4 = str1+str3;
        String str5 ="Hello"+"world";
        System.out.println(str==str1);//false 引用的地址不同
        System.out.println(str2==str4);//false字符串使用+进行拼接其实是StringBuilder底部调用append方法将str1和str3进行拼接,
        // 然后通过toString方法转换成字符串,并将结果返回给新的字符串str4
        System.out.println(str2==str5);//true 常量池中已经存在Hello字符串和World字符串 进行拼接时不需要再创建新的对象
        System.out.println(str2.equals(str4));//true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值