int和Integer的区别(equals和==)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int和Integer的区别(equals和==)相关的知识,希望对你有一定的参考价值。

参考技术A   在这里,我首先讲一下常量池的概念和在jvm里面内存存储情况。

1:常量池(constant pool) ,就是存放常量的池子(为什么会有常量池这种东西存在我在这里不做阐述,可以看看java虚拟机内存分析)。

2:int / Integer 在内存中的位置 :首先我们举个列子:

上面的三种创建整型方法大家应该再熟悉不过了,但是他们在内存中的存储位置却有着很大区别。

3:== 比较说明

4:注意点 :new Integer(int num) 和int 比较会做强制转换。用new形式创建Integer和int比较,会将new Integer()强制转换成int类型,见下图:

5:案例 :

6:jvm中常量池位置

      1.7之前,存在于方法区。
      1.7,存在于永久代
      1.7之后,存在于元空间,就是pc直接内存,因为1.8删除了永久代。

7:equals()方法
       直接看Integer重写Object的equals方法,直接比较的具体指是否相等。值相等即为true。

==和equals的区别

  1、对于基本数据类型(如:int),==可以用来比较它们的值是否相等;对于封装类型(如:String,Integer),==是比较它们在内存中的地址是否一致。

  2、equals是对象方法,比如String.equals(String example),用来比较String对象的值,equals方法可以override,我们可以重写equals方法来比较我们的自定义类对象。

  PS:验证字符串的值是否等于某个字符串的值时最好以“test”.equals(String)这样的形式比较,防止出现空指针异常。

以上是关于int和Integer的区别(equals和==)的主要内容,如果未能解决你的问题,请参考以下文章

==与equals的区别与联系以及有关int与integer面试题

java细节篇(==和equals的区别)

==和equals的区别

== 和 equals 的区别是什么?

String 类型equals方法和int == 方法效率比较

简述java中equals()方法和==的区别