String类的equals()与“==”的区别

String类中的equals()与“==”都是平时常用的比较方法,但是它的用法和作用是由区别的;在相对应的情况下使用正确的比较方法;

String对象的两种生成方式:

  1. 作为基本类型来使用:

  1. 作为一个对象来使用,即使用new来进行创建,这时会分配一个新的内存堆;

这两者的主要区别在于:

1. 首先,这两个对象并不是通过new来创建的,所以虚拟机并不会为这两个对象分配内存堆,而是到String缓冲池中寻找。

2. 其次,为str寻找String缓冲池中是否存在与“abc”相同值的String对象存在,如果有,直接将该对象的引用赋值给str,若没有,则虚拟机会在缓冲池内创建此对象,其动作就是new String(“abc”);,然后把此String对象的引用赋值给str。

String的两种比较方式

1. “==”这里的比较是针对两个String类型的变量的引用,也就是说如果两个String类型的变量,他们所引用的是同一个string对象(指向同一个内存堆),即返回true。

2. 用Object对象的equals()方法String对象继承自Object,并且对equals方法进行了重写,用此方法进行比较时,其实是对String对象封装的字符串内容进行比较,相同返回true。

以下几种情况,可以了解一下:

1、

2、

上面的两个例子可以得知两个最大的区别:

(1)"=="是Java提供的关系运算符,主要的功能是进行数值相等判断的,如果用在了String对象上表示的是内存地址数值的比较。

(2)equals()方法是由String提供的一个方法,此方法专门负责进行字符串内容的比较; 是继承Object的;通常是比较两个对象的hashCode,对于字符串,hashCode是通过字符串的内容算出来的,所以间接可以比较两个的内容。

3、

4、

总结:

1、对于基本数据类型,“==”比较的是两者的值是否相等。

2、对于引用数据类型:

(1)“==”比较的是引用的地址是否相同(即是否是同一辆汽车(注意,只有一辆汽车));Object中的.equals()方法和"==’功能一样

(2)但是String类中的.equals()方法重写了,比较的是两个引用对象的内容是否想同(即是否是完全相同的汽车(注意,有两辆汽车,且一模一样,完全相同))。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值