java中的string equals 与 == 的比较

==比较的是对象的地址或者是引用,equals比较的是对象的内容

举例如下:

 1.String str1="hello";

    String str2="hello";

     "=="比较的结果是ture,str1初始化的时候首先程序会到String池查找是否存在一个和hello内容一样的对象,如果存在的话就将其引用赋值给str1,否则会在池中续一个"hello"对象,并指向这个对象。当定义一个str2时,这个时候String池中已经存在了一个"hello"对象,因而两个对象其实是引用的一个地址,所以会返回true。

   "equals"的执行结果也是true,这个不用解释了。

2.String str1="hello";

String str2=new String("hello");

"=="比较的结果是false,这是由于定义Str2的时候不管String池中是否存在这个“hello”对象,都会新建一个String的对象并将其赋值给Str2,所以两个对象的引用是不同的地址,因而返回false。

"equals"的执行结果为true,由于两者的内容是完全一样的。


==是比较的是两个引用,他们必须是要指向同一个对象的,但是equals则不同,它只是比较这两个字符串的内容是否相等。当我们新new来一个对象的时候,我们就需要用的是equals。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值