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 国际」知识共享许可协议进行许可。
欢迎转载,转载请注明出处!
最新文章
- mac 给某个目录添加权限
- 在SpringMVC中获取request对象
- 用了那么久居然没发现firefox快捷键有如此多
- Java跨平台原理
- $.toJSON的使用方法
- maven学习系列教程,第一课(web项目的搭建)
- 类似百度文库pdf2swf+flexpaper解决pdf在线阅读的效果
- 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication
- ORA-03113 通信通道的文件结尾(ORA-19804 ORA-16038-归档空间满的处理方法)
- Guava之简介
- ARMs3c2440开发板挂接NFS服务
- 别纠结mybatis啦,赶紧来瞅瞅吧
- Docker学习笔记2: Docker 概述
- UE4联机烘焙
- 程序猿想聊天 - 創問 4C 團隊教練心得(二)
- 博弈论进阶之Every-SG
- codeforces604B
- mac环境下intellij的自定义配置文件位置
- java杨辉三角和空心菱形(二维数组篇)
- android-studio开发NDK错误记录:bash: ../../build/intermediates/classes/debug: is a directory
热门文章
- 20、Java 泛型
- 2020-07-26:如何用 socket 编程实现 ftp 协议?
- ASP.NET Core 奇技淫巧之接口代理转发
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
- android.content.ActivityNotFoundException: No Activity found to handle Intent { (has extras) }
- kubectl 安装
- 逆流而上,7月阿里最新出炉的三面面经,年薪50W,我行您也行
- ubuntu18.04 开机定时启动任务
- Python2.7.8 setuptools 下载及安装方法
- python编程中的并发------多线程threading模块