关于面试:面试官小伙子你给我讲一下Integer和int的区别

48次阅读

共计 1600 个字符,预计需要花费 4 分钟才能阅读完成。

前言

Integer 和 int 最实质的区别就是:Integer 是封装类,int 是根本数据类型(这是废话)。

本文是心愿能对 Integer 和 int 的区别进行更具体的比照阐明并加以举例

Integer 和 int 的区别

Integer 的默认初始值是 null,而 int 的初始值是 int
也就是说 Integer 可能辨别出未赋值和值为 0 的区别,而 int 却不能表白出未赋值的状况,所以 int 不适宜作为 web 层的表单数据填写。(例如:一个学生参加考试且问题为 0,和没加入考试成绩为 null)
Integer 是类,自带很多办法供应用,而 int 只能做一些根本的±*/= 的操作
Integer 变量必须先实例化,int 变量间接应用

对于 Integer

在阐明 Integer 的时候有几个小知识点提一下:

拆箱和装箱

什么时候拆箱:根本数据类型和援用数据类型做运算时
什么时候装箱:根本数据类型赋值给援用数据类型时
“==”和“equals()”

“==”:在比拟根本数据类型时比拟的是数值,比拟援用数据类型时比拟的是对象堆内存地址
equals():在 Object 类中是通过“==”来比拟的,但大多时候,咱们会将其进行重写
在 Integer 类中,“==”用来比拟对象地址是否雷同,而 equals()被重写,他会先判断参数中对象是否为 Integer 类型,如果是则判断值是否雷同。

 public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}
        return false;
    }

几点阐明

Integer 变量和 int 变量比拟值时,只有值是相等的,后果就为 true(因为 Java 会主动拆箱,将 Integer 拆为 int,在进行比拟)

Integer a = new Integer(1);
int b = 1;
System.out.println(a == b);//true

两个通过 new 生成的 Integer 变量是永远不相等的(因为 new 生成的是两个新对象,内存地址不同)

Integer a = new Integer(1);
Integer b = new Integer(1);
System.out.println(a == b);//false

一个 new 产生的变量和一个非 new 产生的 Integer 变量也是不相等的(因为非 new 产生的 Integer 变量指向 Java 常量池中的对象,而 new 产生的变量指向堆中新建对象,他俩所在的内存地址不同)

Integer a = new Integer(1);
Integer b = 1;
System.out.println(a == b);//false

两个非 new 产生的 Integer 变量比拟:当值在 -128~127 之间时,后果为 true,当值在此区间外后果为 false(因为 Integer 常量池的存储范畴是[-128,127],在此范畴内是间接存储于常量池的,都指向同一个地址。在此范畴外的数须要通过堆内存创立一个新对象。比方 Integer a= 1 会将 1 写入缓存中,下次再写 Integer b= 1 时会间接从缓存中去,不必 new 了,所以取到的地址也是雷同的)

Integer a = 1;
Integer b = 1;
System.out.println(a == b);//true

Integer a = 129;
Integer b = 129;
System.out.println(a == b);//false

最初

欢送关注公众号:前程有光,支付一线大厂 Java 面试题总结 + 各知识点学习思维导 + 一份 300 页 pdf 文档的 Java 外围知识点总结!这些材料的内容都是面试时面试官必问的知识点,篇章包含了很多知识点,其中包含了有基础知识、Java 汇合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等。

正文完
 0