如何分辨equals和==

首先,让我们先来打好基础

第一个知识点:

        JAVA中的两种数据类型

        看上面,也许你会看到头晕吧!

        没关系,让我们举个栗子吧!

              #基本数据类型:int a = 2

              #引用数据类型:String b = new String("2")

        你只要记住这两个就好了!

第二个知识点:

        栈:存储基本数据类型和对象的引用

                问:老湿,存储基本数据类型我懂了,但是那么什么是对象的引用呢?

                答:通俗的讲就是存储一个对象的地址

                @地址是什么呢?比如北京市朝阳区,我能通过这个地址找到你家

                @内容是什么呢?你家里面放了哪些东西,这些东西就是内容。

        堆:存储引用数据类型

                你可以理解直接存储了引用数据类型的内容,就是你家房子里面的东西

第三个知识点:

        字符串池你可以理解为一个池子,里面养着很多字符串,如果这个池子里面已经有了这个字符串,那我就不需要重新再生成一个字符串了,直接拿来就用,所谓拿来主义,就是这么来的。

那么什么时候我可以伸手去拿呢?

        当然是有条件的啦 比如说String a = "aaa" 这句代码的含义就是说我去字符串池里面去寻找存不存在“aaa”的字符串,如果存在那么我就直接拿来用了,此时相同字符串的栈里面存储的都是这存储这个字符串堆中的引用。

        String a = new String("aaa") 这个不会去字符串池里面去找的哈 它表达的意思是 我想要新的 我不要旧的 我喜新厌旧。

其次,让我们记住这两个知识点本章就结束了

        equals:

                #如果比较基本数据类型:比较栈中的内容

                #如果比较引用数据类型:比较堆中的内容

        ==:

                #如果比较基本数据类型:比较栈中的内容

                #如果比较引用数据类型:比较栈中的内容

本章就这么愉快的结束了!!!开不开心 快不快乐

最后,来几个例子吧!

例1:

        int a = 1

        int b = 1

        a == b  结果为true

        a.equals(b) 结果为true

例1分析:

                a,b均为基本数据类型,均存储在栈中

                == 如果比较基本数据类型:比较栈中的内容

                equals 如果比较基本数据类型:比较栈中的内容

例2:

        String a = new String("aa")

        String b = new String("aa")

        a == b 结果为false

        a.equals(b)  结果为true

例2分析:

              a,b均为引用数据类型,均存储在堆中

              == 如果比较引用数据类型:比较栈中的内容 此时栈中为对象的引用

              equals 如果比较引用数据类型:比较堆中的内容

例3:

        String a = "aaa"

        String b = new String("aaa")

        String c = "aaa"

        a == b 结果为false

        a == c 结果为true

        b == c 结果为false

例3解析便在我的第三个知识点 翻上去看看吧!!!

猜你喜欢

转载自blog.csdn.net/qq_50709355/article/details/123448755