码迷,mamicode.com
首页 > 编程语言 > 详细

java ==和equals 的区别

时间:2017-09-02 18:07:54      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:处理   ring   end   一个   bool   引用   地址   相等   问题   

以String类型举例

情景1 当声明2个变量 a,b比较值

String a = "test";
        String b = "test";
        boolean end = false;
        if(a==b) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 是显示相等 ,因为 ==是判断引用是否指向堆内存的同一块地址。 "test"是一个对象被a,b变量引用,所有啊a,b是相同指向,所有==判断,这个时候equals也相等

情景2 让2个变量 持有不同引用

String c = new String("test1");
        String d = new String("test1");
        end = false;
        if(c==d) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 显示不等 ,结论和上一条一致

情景3 解决情景2的问题

String g = new String("test1");
        String h = new String("test1");
        end = false;
        if(g.equals(h)) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 显示相等 ,equals 在处理不同引用对象 正确比较堆中内容的方法

结论,关心内容相等应该使用equals为好

java ==和equals 的区别

标签:处理   ring   end   一个   bool   引用   地址   相等   问题   

原文地址:http://www.cnblogs.com/gavinjunftd/p/7467046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!