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. 微信号可以改了?我用 Python 发现了隐藏的 6 大秘密.

    “听说,微信可以改微信号了! ” 不知道谁扯了一嗓子,让办公室变成了欢乐的海洋 张姐流下了激动的泪水:“太好了!姐的年龄终于不用暴露在微信号了!” 很多人学习python,不知道从何学起.很多人学习p ...

  2. Pytorch_第九篇_神经网络中常用的激活函数

    神经网络中常用的激活函数 Introduce 理论上神经网络能够拟合任意线性函数,其中主要的一个因素是使用了非线性激活函数(因为如果每一层都是线性变换,那有啥用啊,始终能够拟合的都是线性函数啊).本文 ...

  3. 微信公众号里面怎么添加xls

    微信公众号里面添加xls的教程 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号 ...

  4. Java实现经典七大经典排序算法

    利用Java语言实现七大经典排序算法:冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序. 分类 类别 算法 插入排序类 插入排序.希尔排序 选择排序类 选择排序.堆排序 交换排序类 ...

  5. JavaScript 跨站攻击脚本-XSS

    XSS: Cross Site Scripting XSS 概念 恶意攻击者往Web页面里插入恶意script代码, 当用户浏览该页之时,嵌入Web里面的script代码会被执行,从达到恶意攻击的目的 ...

  6. flask-sqlalchemy同字段多条件过滤

    举例 from sqlalchemy import or_,and_# from operator import or_, and_ allapp = AppServer.query.filter(a ...

  7. 解决"$ is not defined" 亲自体验

    引入jquery <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

  8. 分享一个bootstrap的上一步,下一步的插件

    效果图: 下载链接: https://www.daimabiji.com/index.php?m=content&c=down&a_k=ae0fI1gZyLT7oao56Pgu-dye ...

  9. META.表

    META.表

  10. 区块链入门到实战(26)之以太坊(Ethereum) – 挖矿

    以太坊(Ethereum)与其他公共区块链一样,使用工作量证明机制确保区块链网络正常运行. 矿工进行工作量证明计算,即挖矿,来选择区块,写入区块链,确认交易. 交易过程如下图所示: 从技术角度来看,以 ...