java中equals和==的区别

在编程生涯中,经验会比较两个值或对象是否相等,那么是使用了equals还是==呢,你是否清楚二者的区别呢?

   
二者的区别:

        
"==" 操作比较的是两个变量的值是否相等,即两个对象在内存中的首地址。    
"equals" 操作表示的两个变量是否是对一个对象的引用,即比较字符串中所包含的内容是否相同。

例子:  
    String a = "1234";

    String b = "1234"
    String c = new String("1234");
    String d = new String("1234");    
    ①a==b  结果:true
    ②a==c  结果:flase
    ③a.equals(c) 结果:true
    ④c==d 结果:flase
    ⑤c.equals(d) 结果:true

原因:
创建 a = "1234" 程序会在String缓冲池中存入值,
创建 b = "1234" 程序首先会在这个String缓冲池中寻找相同值的对象

JVM会在常量池中先查找有没有一个值为"1234"的对象,
如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,
如果没有,则在常量池中新创建一个"1234",下一次如果有String b = "1234";又会将b指向"1234"这个对象

使用了 new 操作符,他告诉程序:“要创建一个新的,不要旧的!”于是就又创建了一个新的"1234"String对象。

转载于:https://my.oschina.net/onlrl/blog/673114

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值