Java中== 和equals的区别

时间:2025-02-12 17:15:09

java中==和equal的区别

文章目录

      • java中==和equal的区别

java中有八种基本数据类型

  • short/int/long/float/double
  • byte
  • char
  • boolen

这些基本的数据类型在生成时直接存储在内存中的内存栈上,数据本身的值就是存储在栈空间里面。

==就是在内存栈上比较这两个值是否相同。

这些基础数据类型毕竟缺少灵活性,java给每个基础数据类型都加了引用数据类型

  • Short/Integer/Long/Float/Double
  • Byte
  • Character
  • Boolen

引用数据类型的“引用”(存储对象在内存堆上的地址)是存储在有序的内存栈上,而对象本身的值则存在内存堆上。

equals就是来比较两个对象之间的是否相同。==则比较两个存储对象的"引用"是否相同。

// 这里当一个数值和对象相比较的时候怎么办?
int a = 12;
Integer b = 12;
System.out.println(a==b);  // true

但是能够发现

Integer a = 12;
Integer b = 12;
System.out.println(a==b);  // true
Integer c = 1000;
Integer d = 1000;
System.out.println(c==d);  // false

对于Integer来说,会创建一个缓存区域,用来存放-128~127之间的数据

JVM调优学习(一):基本概念 - 爱码网 ()