java中的==和equals的区别

当创建一个对象时,会调用构造方法来得到内存空间,将对象的数据存到堆区中,之后堆区会返回一个引用数据类型(地址),这个地址会存在栈区中,后期使用的时候其实是通过栈区来使用堆区的数据。

==:
在Java中的八大基本数据类型储存的是值,在用==来比较时,比较的就是值。
但是对于引用数据类型的变量,由于引用数据类型储存的是一个内存的地址,这样用==来比较的话,得到的结果就是两个地址之间的比对

equals:
equals是基类Object里定义的方法,所以对于所有继承与Object的类都会有这个方法,这个方法比对的则是两个对象的引用地址是否相同。而在比对String时,会发现这个方法被重写了,那么此时比对的就是引用数据类型里储存的地址所指向内存里的内容。

总结一下:
==:
用于基本数据类型时,比较的是储存的值是否相同
用于引用数据类型时,比较的是储存的内存地址是否相同

equals:
在没有被重写的情况下,比对的是引用数据类型里储存的地址是否相同
若类似String类对equals进行了重写,那么比对的就是地址所指向的内容是否相同

你可能感兴趣的:(java中的==和equals的区别)