Java中==和equals的区别

简介: Java中==和equals的区别

1 问题

在Java中,equals是在object类中的方法,在object中equals是用来看看两个参数是否引用的是同一个对象,而 == 可用于判断两个对象的地址是否相等,那么equals和 == 有什么区别?


2 方法

首先,对于基本类型变量(如int, float)来说,equals和 == 的作用是相同的。例如:int m = 3;int n = 3;m==n的结果是true;equals(a)的结果也为true。

第二,对于字符串来说。字符串是一个引用数据类型,对于引用数据类型来说,"=="比较的是两个对象在内存中的地址,"equals"比较的是两个对象的内容。例如:

其运行结果为:

(1)str==str1的结果为true,说明str与str1的引用对象是相同

(2)str.equals(str1)的结果是true,说明两者的内容相同。

若比较str与str2:

其结果为:

(3)str==str2的结果是false;str.equals(str2)的结果是true。那就是说明str与str1引用对象不同,内容相同。


3 结语

针对Java中,equals和==的区别的问题,提出在相同的条件下,比较用equals和==运行的结果的不同,通过实验可以看出,在基本类型变量条件下,equals和==的作用相同,而在字符串类型下,程序运行的时候,它会创建一个字符串缓冲池用以存放字符串变量。当你声明一个字符串变量时,程序会首先检查缓冲池中是否已有相同值的对象。如有,则直接返回这个对象的地址;若没有,则创建一个对象并将其放入缓冲池,然后再返回地址。而(2)之所以与(3)不同,是因为创建时使用了new操作符;明确的表明了想要新创建一个对象。因此str与str2的内容虽相同,但对象却不同。


目录
相关文章
|
17小时前
|
安全 Java
【JAVA】在 Queue 中 poll()和 remove()有什么区别
【JAVA】在 Queue 中 poll()和 remove()有什么区别
|
17小时前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
17小时前
|
Java
【JAVA】throw 和 throws 的区别?
【JAVA】throw 和 throws 的区别?
|
17小时前
|
Java
【JAVA】Iterator 和 ListIterator 有什么区别?
【JAVA】Iterator 和 ListIterator 有什么区别?
|
17小时前
|
Java 开发框架 XML
JDK、JRE、Java SE、Java EE和Java ME有什么区别?
JDK、JRE、Java SE、Java EE和Java ME有什么区别?
|
17小时前
|
Java
java一分钟之-字符流与字节流的区别
【5月更文挑战第11天】Java的输入输出通过流操作,分为字符流和字节流。字节流处理二进制数据,如图片、音频,基类是`InputStream`和`OutputStream`;字符流处理文本,基类是`Reader`和`Writer`。字符流涉及编码转换,字节流不涉及。易错点包括乱码(需指定编码)、混用流类型和忘记关闭流。示例展示了字节流和字符流读文件。理解区别并注意编码和资源管理可提高代码质量。
35 3
|
17小时前
|
安全 Java 编译器
Java中String、StringBuilder和StringBuffer的区别
Java中String、StringBuilder和StringBuffer的区别
10 1
|
17小时前
|
Java
Java中 a+=b和a=a+b有什么区别?
Java中 a+=b和a=a+b有什么区别?
|
17小时前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
17小时前
|
存储 安全 Java
【JAVA】concurrentHashMap和HashTable有什么区别
【JAVA】concurrentHashMap和HashTable有什么区别