= =与equals的区别

来源:互联网 发布:在c 中执行sql语句 编辑:程序博客网 时间:2024/06/05 18:39

= =与equals的区别

      看过网上写的关于这个主题的博客,感觉写的都不够深刻,今天看到这个问题,我也总结一下这个问题。如果有疑问大家可以共同交流。

【问题提出】

先看下面代码:

代码段1:

class A

{

    publicint a;

    publicvoid setA(int x)

    {

       a = x;

    }

   

}

publicclass EqualAndIdetical

{

    publicstatic void main(String args[])

    {

       //Test equals

       A  a1 = new A();

       A  a2 = new A();

      

       a1.setA(1);

       a2.setA(1);

      

       if(a1.equals(a2))

       {

           System.out.println("YES!");

       }

       else

       {

           System.out.println("NO!");

       }

      

       A  a3= new A();

       A  a4 = new A();

      

       a3.setA(1);

       a4 = a3;

      

       if(a3 == a4)

       {

           System.out.println("YES!");

       }

       else

       {

           System.out.println("NO!");     

        }

     }

}

最后的输出结果为NO  YES,为何会出现这样的情况呢?

再看一个问题?如下:

publicclassEqualAndIdetical

{

    publicstatic void main(String args[])

    {

       Stringstr1 = newString("Welcome");

      

       Stringstr2 = newString("Welcome");

       Stringstr3 = str1;

      

       System.out.println(str1==str2);

       System.out.println(str1==str3);

       System.out.println(str1.equals(str2));

       System.out.println(str1.equals(str3));

      

    }  

}

输出结果为false   true   true   true

       看了上边两个问题之后感觉,出现这样的现象是不可思议的,其实也没什么大不了的,只要记住下边的结论理解起来就很容易了。

       对于字符串变量来说,使用==与使用equals()方法来比较,其比较方式是不同的。“==”用来比较两个变量本身的值,即两个变量在内存中的首地址,equals()方法用来比较两个字符串中所包含的内容是否相同。

       对于非字符串类型的对象变量来说,“==”与equals()方法都用来比较其对象在内存中的首地址,即比较两个类类型的变量是否指向同一对象。

       上边理论理解之后,咋们分析一下第二个问题,如图,可以看出内存中分配情况:根据内存分配情况可以得出上边的结论:


 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微博昵称受限怎么办 被新浪屏蔽了怎么办 微博qq忘记密码怎么办 三星盖乐世忘记密码怎么办 三盖乐世4忘记密码怎么办 密码锁钥匙丢了怎么办 商标是tm标怎么办 环保合格证掉了怎么办 车子合格证丢了怎么办 大牙附近肿了怎么办 办好营业执照后怎么办商标 商标十年到期了怎么办 公司注册了商标怎么办 2018年属兔不适合结婚怎么办 交通事故对方没钱赔怎么办 滴滴快车出车祸怎么办 交警法院扣车怎么办 肇事逃逸没钱赔怎么办 撞死人无力赔偿怎么办 宝贝咳嗽很厉害怎么办 开车有人别车怎么办 判刑罚金交不起怎么办 罚金太多交不起怎么办 判决书上的罚金怎么办 刑事罚款不交怎么办 缎面的鞋脏了怎么办 夏天脸上长粉刺怎么办 鬃狮不吃东西怎么办 买二手车的车牌怎么办 榴莲打开了肉没熟怎么办 gmat的prep做完怎么办 电脑没ip地址怎么办 电脑ip地址缺失怎么办 cos还原不了人物怎么办 执行局抓人十五天不放人怎么办 笔记本电脑键盘按键错乱怎么办 靠墙倒立上不去怎么办 医院多收钱了怎么办 学生总是转笔怎么办 吃错东西呕吐怎么办 手腕筋扭伤了怎么办