美文网首页
==和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则是根据地址拿到堆里面的内容进行比较。

相关文章

  • Java 比较相等

    Java Equals() 特性 Equals() 和 == 的区别 重写Equals方法 重写HashCode方法

  • equals,==和 equals,hashCode

    == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引...

  • Object的基本方法

    一 equals和hashCode equals和== equals的默认实现就是==,既比较两个对象的引用。 最...

  • 【面试1】

    基础 1、equals和==(equals和==的区别)equals:是Object的一个方法,实现对象的比较;复...

  • java容器

    equals和hashCode equals和hashcode间的关系:如果两个对象相同(即equals比较返回t...

  • Java

    equals和hashcode public boolean equals(Object obj){ retur...

  • ==和equals

    在初学Java时,可能会经常碰到下面的代码: 1String str1 =newString("hello");2...

  • ==和equals

    ==和equals的区别: ==和equals方法都是用来比较两个变量/对象是否相等。 如果没有重写equals方...

  • == 和 equals

    这个问题缠绕了很久。什么时候用==?基本数据类型时使用==,byte - long -int -short -ch...

  • ==和equals

    ==: ==: 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是是否相同,即是否是指的...

网友评论

      本文标题:==和equals()

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