Java面试题(1):详解int与Integer

int与Integer的区别

  • int是Java的基本数据类型之一,Integer是int的包装类

  • int直接再内存中储存值,Integer进行new操作,实际是生成了一个对象

  • int的默认值为0,Integer的默认值为null

  • Integer必须实例化(赋值)后才可以使用,而int无需实例化

int与Integer的比较

Integer i = new Integer(200);生成方式简称为new Integer

Integer i = 200;生成方式简称为Integer

  1. int与int比较,数字一样为true

  2. int与Integer,int与new Integer比较,数值一样结果均为true

// int与Integer,new Integer比较
// int与Integer比较,Integer会自动拆箱为int
int i1 = 200;
//相当于Integer i2 = Integer.valueOf(200); //自动装箱
Integer i2 = 200;
Integer i3 = new Integer(200);
//自动拆箱后和i1进行比较
System.out.println(i1 == i2); //true
System.out.println(i1 == i3); //true
  1. new Integer与new Integer比较,数字一样结果均为false
//生成的对象在堆中是不同的对象,所以数值相同也为false
Integer i1 = new Integer(200);
Integer i2 = new Integer(200);
System.out.println(i1 == 12); //false
  1. 非new生成的Integer之间比较分两种情况:

-128 <= i <= 127,非new生成的Integer之间比较数字相同时,结果为true

Integer i1 = -128;
Integer i2 = -128;
System.out.println(i1 == i2); //true

i 不在这个区间内,非new生成的Integer之间比较数字相同时,结果为false

Integer i1 = -129;
Integer i2 = -129;
System.out.println(i1 == i2); //false
  1. new Integer与非new Integer比较,数值一样结果均为false

非new Integer在-128~127中,会通过valueOf指向常量池中

非new Integer不在-128~127中,相当于new Integer,是一个对象

new Integer会指向堆中,均为对象,地址不同,所以均为false

Integer i1 = 100;
Integer i2 = new Integer(100);
System.out.println(i1 ==i2); //false

知识点扫盲

  1. 自动装箱与自动拆箱

自动拆箱:把包装类类型转换为基本类型

自动装箱:把基本类型转换为包装类类型

  1. -128-127的特殊性

i >= -128 并且 i <= 127 的时候,代码中的 if 条件成立,Integer i1 = 100,将 i 的值放入缓存中,Integer i2 = 100直接取缓存里面的数据,而不是重新创建一个Ingeter 对象,所以两个Integer i = 100相比为true;

public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

作者: Neumann97

出处:https://www.cnblogs.com/dream-by-dream/p/13637628.html

版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

欢迎转载,转载请注明出处!


Java面试题(1):详解int与Integer的更多相关文章

  1. java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...

  2. 《Java面试全解析》1000道面试题大全详解(转)

    <Java面试全解析>1000道 面试题大全详解 本人是 2009 年参加编程工作的,一路上在技术公司摸爬滚打,前几年一直在上海,待过的公司有 360 和游久游戏,因为自己家庭的原因,放弃 ...

  3. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

  4. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  5. java之StringBuffer类详解

    StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...

  6. java之AbstractStringBuilder类详解

    目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(in ...

  7. (转)java.util.Scanner应用详解

    java.util.Scanner应用详解   java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...

  8. java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock

    原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...

  9. java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系

    本文关键词: java continue break 关键字 详解 区别  用法 标记  标签 使用 示例 联系   跳出循环 带标签的continue和break 嵌套循环  深入continue ...

随机推荐

  1. 网站favicon.ico 图标

    favicon.ico一般用于作为缩略的网站图标,它显示在浏览器的地址栏或者标签上.目前主要的浏览器都支持favicon.ico图标. 一.制作favicon图标 1.把图标切成png图片. 2.把p ...

  2. 解放双手!用 Python 控制你的鼠标和键盘

    在工作中难免遇到需要在电脑上做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己去刷网页打游戏,岂不是很爽?] 很多人学习python,不知道 ...

  3. JavaIO流,万物皆文件

    引入IO的原因 基本概念: 数据源和流的概念 IO流的概念细分 IO流的体系 IO流在Java中的流对象:inputStream .... Java对象的序列化和反序列化: 1 为什么需要序列化和反序 ...

  4. Kubernetes 使用arthas进行调试

    环境 因为k8s中是最基本的jre,网上说缺少tools.jar,但是补充了以后还是不行,最后还是将整个jdk给移到容器中的. jre中执行: /home # /opt/jre/bin/java -j ...

  5. Vue中v-model指令的常用修饰符

    v-model指令有三个可以选用的修饰符:.lazy..number以及.trim.vue官方对此的描述为: .number-输入字符串转为有效的数字 .lazy-取代input监听change事件 ...

  6. C#图解教程(第四版)—03—类和继承

    1 使用基类的引用 派生类的实例由  基类的实例   加上  派生类 新增的成员 组成. 派生类的  引用   指向整个类对象,包括基类部分 重点:使用对象的  基类部分的引用  来访问对象   (父 ...

  7. 技术分享丨数据仓库的建模与ETL实践技巧

    摘要:如何搭建数据仓库,在这个过程中都应该遵循哪些方法和原则,项目实践中有哪些技巧. 一.数据仓库的“心脏” 首先来谈谈数据模型.模型是现实世界特征的模拟和抽象,比如地图.建筑设计沙盘,飞机模型等等. ...

  8. 通过phpstudy安装wordpress、使用BP拦截POST型请求包

    使用BP拦截POST型请求包 一.安装phpstudy https://www.xp.cn/download.html 二.安装wordpress Step1:下载wordpress源码,https: ...

  9. 关于haar特征的理解及使用(java实现)

    Haar特征原理综述Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征.它分为三类:边缘特征.线性特征.中心特征和对角线特征.如下所示: Haar-like矩形特征拓展  Lienha ...

  10. magento2 定时任务

    * * * * * /usr/bin/php /www/wwwroot/m2.demo.evebit.cn/bin/magento cron:run | grep -v "Ran jobs ...