首页 技术 正文
技术 2022年11月15日
0 收藏 968 点赞 4,878 浏览 1611 个字

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 国际」知识共享许可协议进行许可。

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


上一篇: Python-11-循环
下一篇: POJ - 3037 Skiing SPFA
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,505
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844