美文网首页
==和equals()

==和equals()

作者: 苦茶般人生 | 来源:发表于2019-03-20 12:01 被阅读0次

    当俩个字符串比较时不能用==进行比较,而应该使用String的equals()方法

    因为==比较的是俩个的内存地址,而不是值的大小,equals()则是比较俩个的值的大小

    对于基本数据类型,由于声明,就会存在栈内存中,int a=3,当你int b =3首先它会先去栈里面找是不是有一个数据为3了,而不会再开辟新空间,如果不是的话新建一个地址,是的话,就把b指向这个地址

    对于其他类型都是存在堆里面的动态分配内存,所以每一次新建一个数据都会动态分配一个内存地址,所以==的时候,当然内存地址是不一样的。

    equals()方法的格式:

    1.当比较俩个字符串时:  第一个字符串.equals(第二个字符串)

    2.当比较一个变量和内容时:"内容".equals(变量名)//或    变量名.equals("内容")

    当声明(定义)一个变量时,会在内存中开辟空间,然后再存放数据

    变量所指向的是内存空间,

    寻找数据内容时则是通过变量名找到内存地址,然后通过内存地址找到内存空间(通过变量名来查找比较方便)

    Java中默认的 equals方法实现如下:

    public boolean equals(Object obj) {    return (this == obj);}

    因为java.util.String重写了equals方法,它返回true是俩个字符串对象包含相同内容,而==则是内存地址

    术语来讲的区别:

    1.==是判断两个变量或实例是不是指向同一个内存空间

    equals是判断两个变量或实例所指向的内存空间的值是不是相同

    2.==是指对内存地址进行比较

    equals()是对字符串的内容进行比较

    3.==指引用是否相同

    equals()指的是值是否相同

    双等号就是比较的栈里面的内容,原始数据类型和地址都是放在栈里面的

    而equals则是根据地址拿到堆里面的内容进行比较。

    相关文章

      网友评论

          本文标题:==和equals()

          本文链接:https://www.haomeiwen.com/subject/cuqpmxtx.html