Java面试题(1):详解int与Integer
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
int与int比较,数字一样为true
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
- new Integer与new Integer比较,数字一样结果均为false
//生成的对象在堆中是不同的对象,所以数值相同也为false
Integer i1 = new Integer(200);
Integer i2 = new Integer(200);
System.out.println(i1 == 12); //false
- 非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
- 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
知识点扫盲
自动装箱与自动拆箱
自动拆箱:把包装类类型转换为基本类型
自动装箱:把基本类型转换为包装类类型
-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的更多相关文章
- java基本数据类型与封装类型详解(int和Integer区别)
int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...
- 《Java面试全解析》1000道面试题大全详解(转)
<Java面试全解析>1000道 面试题大全详解 本人是 2009 年参加编程工作的,一路上在技术公司摸爬滚打,前几年一直在上海,待过的公司有 360 和游久游戏,因为自己家庭的原因,放弃 ...
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...
- java反射机制深入详解
java反射机制深入详解 转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...
- java之StringBuffer类详解
StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
- (转)java.util.Scanner应用详解
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
- java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock
原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...
- java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系
本文关键词: java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系 跳出循环 带标签的continue和break 嵌套循环 深入continue ...
随机推荐
- c语言学习笔记之typedef
这是我觉得这个博主总结的很好转载过来的 原地址:https://blog.csdn.net/weixin_41632560/article/details/80747640 C语言语法简单,但内涵却博 ...
- Pytorch_第九篇_神经网络中常用的激活函数
神经网络中常用的激活函数 Introduce 理论上神经网络能够拟合任意线性函数,其中主要的一个因素是使用了非线性激活函数(因为如果每一层都是线性变换,那有啥用啊,始终能够拟合的都是线性函数啊).本文 ...
- SpringBoot_MyBatisPlus快速入门小例子
快速入门 创建一个表 我这里随便创建了一个air空气表 idea连接Mysql数据库 点击右侧database再点击添加数据库 找到Mysql 添加用户名,密码,数据库最后点击测试 测试成功后在右侧就 ...
- salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...
- JS学习第七天
从js-bom入门到放弃 window常用属性: document 返回该窗口内装载的HTML文档 location 返回该窗口装载的HTML文档的URL screen 返回当前浏览者屏幕对象 his ...
- tableauRFM分析
1.数据源 2.创建相关字段 2.1 购买点会员生命期 2.2 会员最后购买时间 2.3 最后购买点生命期 3.近一个月老客户的生命期情况 排除了当天创建当天购买的情况,可以看到超市的大部分用户是两年 ...
- SpringMVC实现客户端跳转
之前无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转. 这一篇练习如何进行客户端跳转 @ 目录 修改IndexControl ...
- Vue管理系统前端系列二相关工具引入及封装
目录 sass-loader/vuex 等的引入说明 引入 element 引入 axios 1.基本使用 2.封装使用 2.1 开发环境配置请求地址 2.2 配置代理 2.3 添加接口相关文件 sa ...
- Python2.7.8 setuptools 下载及安装方法
Python2.7.8 setuptools 下载及安装方法 电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2014.12.11 作者:陈东陈 阅读说 ...
- DevOps系列(1)-总体架构
扯闲淡 在进入正式话题之前,先扯个淡,这算是第一篇我正式在博客上发布的随笔吧,之前也一直有想写点什么,将自己多年的工作经验分享出来,供大家参考点评,但是奈何一直对自己的文字功底不自信(其实也确实比较烂 ...